Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: mro, inheritance

Что такое MRO?

Этот вопрос проверяет знание порядка разрешения методов (MRO) в Python, который определяет, в каком порядке Python ищет методы в иерархии классов.

Короткий ответ

MRO (Method Resolution Order) — это порядок, в котором Python ищет методы и атрибуты в классах при наследовании. Он определяется алгоритмом C3-линеаризации, который учитывает порядок наследования и иерархию. Порядок можно узнать с помощью метода ClassName.mro() или функции help(ClassName).

Длинный ответ

Когда в Python вызывается метод на объекте, интерпретатор ищет его в классах согласно MRO. Если метод не найден в текущем классе, Python переходит к родительским классам в определённом порядке.
Алгоритм C3-линеаризации гарантирует, что порядок MRO:

  • Сохраняет порядок объявления базовых классов.

  • Обеспечивает корректность наследования.

Пример:

class A:
    	def process(self):
        	print("A")

class B(A):
    	def process(self):
        	print("B")

class C(A):
    	def process(self):
        	print("C")

class D(B, C):
   	 pass

print(D.mro())  # [<class 'D'>, <class 'B'>, <class 'C'>, <class 'A'>, <class 'object'>]

d = D()
d.process()  # "B"

Порядок MRO: D → B → C → A → object. Метод process найден в классе B, и выполнение останавливается.

MRO также используется функцией super(), чтобы найти следующий класс в цепочке.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#mro

#inheritance

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.