When you don't use inheritance, you often get to refer to another module by name. E.g.
`my_dependency.fetch_data(123523)`
With multiple inheritance, however, that other module has become your own "self"!
Suddenly you're stuck with:
`self.fetch_data(123523)`.
And if you want to find the source of `fetch_data()`, you basically have to grep / look through all seven of your base classes.
If you're lucky, the definition you were looking for calls `self.flush()`, where `flush` isn't defined on this class. It's actually intended to be defined on another base class, which is imported by the multiple-inherited subclass.
So, you effectively have a "DSL" whose "statements" consist of your choice of base classes. It's impossible to determine what's a legal "program" in this "DSL" until you run the thing and get method-missing errors.