Python Glossary English

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

inspect.getclasstree()

классы и функции

Раскладывает список классов в дерево наследования из вложенных списков: кортеж (класс, базы), за ним — список его наследников.

Синтаксис

inspect.getclasstree(classes, unique=False)

Структура неочевидна: узел — это пара (класс, кортеж баз), а его потомки идут следующим элементом отдельным списком, поэтому обходят её рекурсией с проверкой isinstance(item, list). Базы, не попавшие в список (тот же object), добавляются корнем сами. При множественном наследовании класс появляется под каждым родителем; unique=True оставляет одно вхождение.

Примеры

import inspect
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
def show(tree, depth=0):
    for item in tree:
        if isinstance(item, list):
            show(item, depth + 1)
        else:
            print('.' * depth + item[0].__name__)
show(inspect.getclasstree([A, B, C, D]))
# → object / .A / ..B / ...D / ..C / ...D
show(inspect.getclasstree([A, B, C, D], unique=True))
# → object / .A / ..B / ...D / ..C

См. также

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