все 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Сообщить о неточности