Python Glossary English

все Python 3inspectфункция

inspect.getmro()

члены и модули

Кортеж базовых классов в порядке поиска атрибутов (MRO), начиная с самого класса; то же, что cls.__mro__.

Синтаксис

inspect.getmro(cls) -> tuple[type, ...]

Принимает класс, а не экземпляр: getmro(obj) падает с AttributeError — нужен getmro(type(obj)). При ромбовидном наследовании порядок не «сначала вся левая ветка»: общий предок идёт после всех наследников (D, B, C, A), и именно по этой цепочке super() выбирает следующий метод. Поэтому super() в B может вызвать метод C, о котором B ничего не знает.

Примеры

import inspect
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print([c.__name__ for c in inspect.getmro(D)])  # → ['D', 'B', 'C', 'A', 'object']
print(inspect.getmro(D) == D.__mro__)  # → True
inspect.getmro(D())  # → AttributeError: 'D' object has no attribute '__mro__'

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности