Ответ
Множественное наследование — это механизм в объектно-ориентированном программировании, позволяющий классу-потомку наследовать методы и атрибуты от нескольких родительских классов одновременно.
Python полностью поддерживает множественное наследование, но его использование требует осторожности из-за потенциальных проблем, таких как «проблема ромба» (Diamond Problem), когда два родительских класса наследуются от одного общего предка, что может привести к неоднозначности при вызове методов.
Для решения этой проблемы Python использует алгоритм MRO (Method Resolution Order), который определяет четкий порядок поиска методов в иерархии классов. Порядок определяется на основе C3-линеаризации.
Пример:
class Engine:
def start(self):
print("Engine started")
class Radio:
def play_music(self):
print("Playing music")
# Car наследует функциональность от обоих классов
class Car(Engine, Radio):
def drive(self):
print("Driving")
my_car = Car()
my_car.start() # Метод из класса Engine
my_car.play_music() # Метод из класса Radio
# Посмотреть порядок разрешения методов (MRO)
print(Car.__mro__)
# (<class '__main__.Car'>, <class '__main__.Engine'>, <class '__main__.Radio'>, <class 'object'>)
Этот механизм особенно полезен для реализации миксинов (mixins) — небольших классов, добавляющих конкретную функциональность другим, не связанным между собой классам.