Одиночное и множественное наследование
Как Вы уже знаете, в Python нет препятствий для использования множественного наследования. Вы можете получить любой новый класс из нескольких ранее определенных классов.
Есть только одно "но". Тот факт, что Вы можете это сделать, не означает, что Вы должны это делать.
Не забывайте об этом:
- класс с одиночным наследованием всегда проще, безопаснее и легче для понимания и поддержки;
- множественное наследование всегда сопряжено с риском, поскольку у Вас гораздо больше возможностей ошибиться при определении частей суперклассов, которые будут эффективно влиять на новый класс;
- множественное наследование может сделать переопределение чрезвычайно сложным; более того, использование функции
super()
становится неоднозначным;
- множественное наследование нарушает принцип единой ответственности (более подробно в описании по ссылке: Принцип единственной ответственности), поскольку он создает новый класс из двух (или более) классов, которые ничего не знают друг о друге;
- мы настоятельно рекомендуем множественное наследование как последнее из всех возможных решений - если Вам действительно нужно много разных функций, предлагаемых разными классами, композиция может быть лучшей альтернативой.