Встречается на 1% собеседований по Python
Как работает механизм поиска аттрибутов при множественном наследовании
В Python используется алгоритм MRO (Method Resolution Order) на основе C3 linearization. Порядок поиска атрибутов определяется следующим образом:
- Сначала проверяется сам объект
- Затем поиск идет по цепочке классов согласно MRO
- При множественном наследовании порядок определяется слева направо и снизу вверх
MRO можно посмотреть через ClassName.__mro__ или ClassName.mro()
Пример:
python
class A:
def method(self):
return "A"
class B(A):
def method(self):
return "B"
class C(A):
def method(self):
return "C"
class D(B, C):
pass
print(D().method()) # Выведет "B" - первый родитель в списке
print(D.__mro__) # (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)Ключевые моменты:
- Порядок наследования важен (в примере B идет перед C)
- Python предотвращает неоднозначности (будет ошибка если невозможно построить линейный порядок)
- Алгоритм гарантирует, что подкласс всегда проверяется раньше родителя

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