> Что такое множественное наследование и как работает метод разрешения порядка (MRO) в Python (Python)

Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Домклик, Сбер, Sunlight

Стек: Python

> Пример ответа

Множественное наследование - это возможность класса наследовать атрибуты и методы от нескольких родительских классов. В Python это реализуется указанием нескольких базовых классов в скобках при определении класса: class Child(Parent1, Parent2):.

Метод разрешения порядка (MRO, Method Resolution Order) определяет последовательность, в которой Python ищет методы и атрибуты при наследовании. В Python используется алгоритм C3-линеаризация (C3 linearization), который гарантирует соблюдение трех принципов:

  1. Подклассы проверяются раньше родительских классов.
  2. Порядок базовых классов в определении класса соблюдается.
  3. Монотонность - если класс A наследуется от B, то A всегда будет проверяться раньше B.

MRO можно посмотреть через атрибут __mro__ класса или метод mro(). Например:

PYTHON
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

Здесь Python сначала ищет метод в D, затем в B, потом в C, потом в A, и наконец в object. Это предотвращает дублирование поиска и решает проблему "ромбовидного наследования" (diamond problem), когда один и тот же родительский класс может быть вызван дважды.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью