Встречается на собеседованиях • сегодня

Что такое diamond inheritance

Diamond inheritance (алмазное наследование) возникает, когда класс наследуется от двух классов, которые в свою очередь наследуются от одного общего родителя. Это создаёт неоднозначность при вызове методов общего предка.

Пример:

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

В Python эта проблема решается через Method Resolution Order (MRO), который определяет порядок поиска методов. MRO следует алгоритму C3 linearization. Для просмотра MRO можно использовать ClassName.__mro__. В примере выше порядок будет: D → B → C → A → object.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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