Встречается на собеседованиях • сегодня
Какая причина изменений в 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
интервью вопросы и ответы