Встречается на собеседованиях • сегодня
Как работает MRO при множественном наследовании в Python
MRO (Method Resolution Order) определяет порядок поиска методов при множественном наследовании. В Python используется алгоритм C3 linearization, который гарантирует последовательный и предсказуемый порядок.
Ключевые особенности:
1. Порядок определяется слева направо в списке родительских классов
2. Подкласс имеет приоритет перед родительскими классами
3. При совпадении родительских классов учитывается порядок их объявления
Пример:
```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" (D -> B -> C -> A)
print(D.mro()) # [, , , , ]
```
MRO можно посмотреть через `Class.mro()` или `Class.__mro__`. Если алгоритм C3 не может построить линейный порядок (например, при конфликтах), Python вызовет `TypeError`.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы