• TehPers@beehaw.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 hours ago

    Mixins are composition! They don’t describe what a type is (“circle” is a “shape”, etc) but rather what they can do (“circle” can have its area calculated, it can be drawn, it can be serialized, etc). Mixins in Python just so happen to be implemented by adding base classes.

    Inheritance itself isn’t really a problem. It usually only matters when you have unnecessarily deep hierarchies, where a change in a base class can change functionality in dozens of classes in an unintentional way. Similarly, it can add complexity once the hierarchy is deep enough, but only really if you throw too much into the base classes.

    Python’s ABCs are more of interfaces though, which is why despite Python using base classes to “inherit” them, a lot of that is really composition (or putting a class together from parts) rather than inheriting and overriding implementation details from a parent/grandparent/etc type.

    • FishFace@piefed.social
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 hours ago

      My feeling was always that it was deep hierarchies that were the real problem. But people don’t always articulate it that way!