假设我有这样的类:
class a(object):
pass
class b(a):
pass
class c(b):
pass
class d(c):
pass
class e(b):
pass我想要一个函数来做一些事情,比如:
>>>get_ inheritance_tree(a)
>>>...b
>>>......c
>>>.........d
>>>......e发布于 2014-10-27 17:48:34
幸运的是,这样的可视化工具已经存在了。
其中一个是埃皮多克。您可以运行如下命令:
% epydoc -v --graph=classtree mymodule1.py [mymodule2.py ...]在它将生成的有用文件中,您可以找到class-tree.html。
发布于 2019-02-10 08:31:03
如果您不需要可视化,但是确实需要一棵树,那么如果您用一个嵌套的分支[object, [children]]列表表示树并离开[object, [[]]],那么就有一种简单的方法来实现它。
然后,通过定义递归函数:
def classTree(cls): # return all subclasses in form of a tree (nested list)
return [cls, [[b for c in cls.__subclasses__() for b in classTree(c)]]]您可以获得继承树:
>>> classTree(A)
[<class 'A'>, [[<class 'B'>, [[<class 'C'>, [[<class 'D'>, [[]]]], <class 'E'>, [[]]]]]]]https://stackoverflow.com/questions/26568976
复制相似问题