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