首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python类继承树

python类继承树
EN

Stack Overflow用户
提问于 2014-10-26 01:36:22
回答 2查看 2.8K关注 0票数 6

假设我有这样的类:

代码语言:javascript
复制
class a(object): 
    pass
class b(a):
    pass
class c(b): 
    pass
class d(c): 
    pass
class e(b):
    pass

我想要一个函数来做一些事情,比如:

代码语言:javascript
复制
>>>get_ inheritance_tree(a)
>>>...b
>>>......c
>>>.........d
>>>......e
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-27 17:48:34

幸运的是,这样的可视化工具已经存在了。

其中一个是埃皮多克。您可以运行如下命令:

代码语言:javascript
复制
% epydoc -v --graph=classtree mymodule1.py [mymodule2.py ...]

在它将生成的有用文件中,您可以找到class-tree.html

票数 2
EN

Stack Overflow用户

发布于 2019-02-10 08:31:03

如果您不需要可视化,但是确实需要一棵树,那么如果您用一个嵌套的分支[object, [children]]列表表示树并离开[object, [[]]],那么就有一种简单的方法来实现它。

然后,通过定义递归函数:

代码语言:javascript
复制
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)]]]

您可以获得继承树:

代码语言:javascript
复制
>>> classTree(A)
[<class 'A'>, [[<class 'B'>, [[<class 'C'>, [[<class 'D'>, [[]]]], <class 'E'>, [[]]]]]]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26568976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档