Michele> That is a common design, but I don't like it, since it becomes Michele> very easy to get classes with dozens of methods inherited from Michele> everywhere, a modern incarnation of the spaghetti-code Michele> concept. I find it much better to use composition, i.e. to Michele> encapsulate the various behaviors in different objects and to Michele> add them as attributes.
Composition is great when you know how largish classes are going to be composed ahead of time and/or already have the pieces available in the form of other classes you want to reuse. I use this fragment-by-multiple- inheritance (I hesitate to call it a) pattern when I realize after a long period of organic growth that a single-inheritance class has gotten too big. It's often relatively easy to carve the class up into multiple related base classes. The next step after that might be to morph those independent base classes back into delegated attributes. Skip -- http://mail.python.org/mailman/listinfo/python-list