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?
Yes. 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 -- http://mail.python.org/mailman/listinfo/python-list