Python Mixins

Carl Banks pavlovevidence at
Sat Sep 24 12:23:11 CEST 2011

On Thursday, September 22, 2011 2:14:39 PM UTC-7, Matt wrote:
> In terms of code, lets say we have the following classes:
> class Animal
> class Yamlafiable
> class Cat(Animal, Yamlafiable)
> class Dog(Animal, Yamlafiable)
> I've got an Animal that does animal things, a Cat that does cat things
> and a Dog that does dog things. I've also got a Yamlafiable class that
> does something clever to generically convert an object into Yaml in
> some way. Looking at these classes I can see that a Cat is an Animal,
> a Dog is an Animal, a Dog is not a Cat, a Cat is not a Dog, a Dog is a
> Yamlafiable? and a Cat is a Yamlafiable? Is that really true?


I hope you are not confusing Cats with cats.

> If my
> objects are categorized correctly, in the correct inheritance
> hierarchy shouldn't that make more sense? Cats and Dogs aren't
> Yamlafiable, that doesn't define what they are, rather it defines
> something that they can do because of things that they picked up from
> their friend the Yamlafile.

The whole point of OOP is that objects are defined by their behavior.  A Cat is whatever it can do.  A Dog is whatever it can do.  If a Cat is yamlafiable, then it's coorect to say that a Cat is a Yamlafible (even if a cat isn't).

Carl Banks

More information about the Python-list mailing list