> Что такое множественное наследование и как работает метод разрешения порядка (MRO) в Python (Python)
Уровень: junior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Домклик, Сбер, Sunlight
Стек: Python
> Пример ответа
Множественное наследование - это возможность класса наследовать атрибуты и методы от нескольких родительских классов. В Python это реализуется указанием нескольких базовых классов в скобках при определении класса: class Child(Parent1, Parent2):.
Метод разрешения порядка (MRO, Method Resolution Order) определяет последовательность, в которой Python ищет методы и атрибуты при наследовании. В Python используется алгоритм C3-линеаризация (C3 linearization), который гарантирует соблюдение трех принципов:
- Подклассы проверяются раньше родительских классов.
- Порядок базовых классов в определении класса соблюдается.
- Монотонность - если класс A наследуется от B, то A всегда будет проверяться раньше B.
MRO можно посмотреть через атрибут __mro__ класса или метод mro(). Например:
PYTHONclass A: passclass B(A): passclass C(A): passclass D(B, C): passprint(D.__mro__)# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)
Здесь Python сначала ищет метод в D, затем в B, потом в C, потом в A, и наконец в object. Это предотвращает дублирование поиска и решает проблему "ромбовидного наследования" (diamond problem), когда один и тот же родительский класс может быть вызван дважды.
> Похожие задачи по Python
В чем разница HTTP методов GET, POST, PUT, DELETE и когда их использовать
Что можно увидеть в explain-плане запросов в Postgres
Использовали ли инструменты для асинхронности в Django, например Celery и Redis
Как работает ключевое слово yield в Python
> Похожие задачи по backend
В чем разница HTTP методов GET, POST, PUT, DELETE и когда их использовать
Что можно увидеть в explain-плане запросов в Postgres
Использовали ли инструменты для асинхронности в Django, например Celery и Redis
Как работает ключевое слово yield в Python
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью