Встречается на 2% собеседований по Python

Какая проблема в множественном наследовании

Основная проблема множественного наследования — "алмазная проблема" (diamond problem), когда класс наследуется от двух классов, которые в свою очередь наследуются от одного базового класса. Это может привести к неоднозначности при вызове методов.

Пример:

python
class A:
    def method(self):
        print("A")

class B(A):
def method(self):
print("B")

class C(A):
def method(self):
print("C")

class D(B, C):
pass

d = D()
d.method() # Выведет "B" из-за MRO (Method Resolution Order)

text

Python решает это через алгоритм C3 linearization (MRO), который определяет порядок поиска методов. Порядок можно проверить через `ClassName.__mro__`.

Другие проблемы:
- Усложнение архитектуры
- Потенциальные конфликты имен методов
- Сложность отладки

Рекомендуется использовать композицию вместо множественного наследования, либо абстрактные классы (ABC).

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы