An article on the Zope Component Architecture describing the use of components, rather than multiple-inheritence for managing complexity.
With multiple inheritance object responsibilities are spread over many separate mix-in classes. Many of the mix-in classes require subclasses to provide specialized meta-data or methods to customize the behavior of the mix-in. Classes typically have a large number of base classes and many bits of meta-data and special methods that are unrelated to the object's core functionality. .
An alternative for managing complexity is to spread the complexity over multiple cooperating objects, which make individual classes are much simpler, and thus, easier to maintain and allow functionality to be added and changed without modifying existing classes.