25 lines
596 B
Python
25 lines
596 B
Python
def tree(cls):
|
|
yield cls.__name__, 0
|
|
yield from sub_tree(cls)
|
|
|
|
|
|
# tag::SUB_TREE[]
|
|
def sub_tree(cls):
|
|
for sub_cls in cls.__subclasses__():
|
|
yield sub_cls.__name__, 1
|
|
for sub_sub_cls in sub_cls.__subclasses__():
|
|
yield sub_sub_cls.__name__, 2
|
|
for sub_sub_sub_cls in sub_sub_cls.__subclasses__():
|
|
yield sub_sub_sub_cls.__name__, 3
|
|
# end::SUB_TREE[]
|
|
|
|
|
|
def display(cls):
|
|
for cls_name, level in tree(cls):
|
|
indent = ' ' * 4 * level
|
|
print(f'{indent}{cls_name}')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
display(BaseException)
|