Встречается на 1% собеседований по Python
Какая причина изменений в Python в механизме MRO
В Python 3 механизм MRO (Method Resolution Order) был изменён с алгоритма глубинного поиска (DFS) на алгоритм C3. Основная причина — устранение проблем с неоднозначностью порядка разрешения методов в сложных иерархиях множественного наследования.
Пример проблемы в Python 2 (DFS):
python
class A:
def method(self): print("A")
class B(A):
pass
class C(A):
def method(self): print("C")
class D(B, C):
pass
D().method() # В Python 2 выведет "A", хотя логичнее "C"
text
C3-линеаризация гарантирует:
1. Консистентность: если класс X предшествует Y в MRO, то так будет во всех подклассах
2. Монотонность: порядок в родительских классах сохраняется в дочерних
3. Локальный приоритет: дочерний класс имеет приоритет перед родительским
Для Python 3 тот же пример даст ожидаемый результат "C", так как C3 учитывает порядок наследования (D → B → C → A).
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы