Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как посмотреть MRO у класса?

Вопрос проверяет понимание порядка разрешения методов при множественном наследовании и умение быстро диагностировать, откуда берется метод.

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

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

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

MRO нужен, чтобы предсказуемо понять: какая реализация метода будет выбрана.

Определение

MRO — порядок обхода базовых классов при поиске атрибута/метода (используется, например, при вызове obj.method()).

Способы посмотреть MRO

  1. Метод класса:

    MyClass.mro()
    
  2. Атрибут класса (кортеж классов):

    MyClass.__mro__
    
  3. Встроенная документация:

    help(MyClass)  # покажет MRO в выводе
    

Мини-пример

class A:
    def f(self): return "A"

class B(A):
    def f(self): return "B"

class C(A):
    def f(self): return "C"

class D(B, C):
    pass

print([cls.__name__ for cls in D.mro()])  # ['D', 'B', 'C', 'A', 'object']
print(D().f())  # 'B' (берётся из B, потому что B раньше в MRO)

Почему это важно на практике

  • Разбор багов в множественном наследовании

  • Понимание, как работает super() (он идёт по MRO, а не “в родителя один шаг”)

  • Предсказуемое переопределение методов в миксинах

Вывод

Смотреть MRO — быстрый способ понять, “почему вызывается именно этот метод”, особенно когда наследование сложное.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Python

    Python

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

#mro

#method

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

  • Аватар

    Python Guru

    Sergey Filichkin

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