是否有一种简单的方法以树形式打印类的层次结构?

问题描述 投票:4回答:1

是否有一个函数可以以树形式打印python类的层次结构,就像qazxsw poi为git提交做的那样?

我想做的例子:

git log --graph

输出可能是什么样的示例(但变化很好)。如果mro也可以直接从图中读出,那么奖励积分,就像我从上到下完成的那样,但如果没有,那也没关系。

class A(object): pass
class B(A): pass
class C(B): pass
class D(A): pass
class E(C, D): pass

printtree(E)
python multiple-inheritance graph-visualization
1个回答
5
投票

不,没有内置功能可以做到这一点,你必须建立自己的。但是知道布局和绘制ASCII图是一项复杂的任务,Mercurial图形代码(相当于E |\ C | | D B | |/ A | object 的Python)是git log --graph

将图形布局留给像quite involved and complicated这样的专用实用程序会更有效率。有人已编写代码来执行此操作,请参阅Graphviz,它们转向:

this article by Michele Simionato, Ph. D

class M(type): pass # metaclass class F(object): pass class E(object): pass class D(object): pass class G(object): __metaclass__=M class C(F,D,G): pass class B(E,D): pass class A(B,C): pass

完成标签中列出的完整MRO。虽然代码是在15年前编写的,但它仍然可以按照设计在Python 3上运行(我使用3.8.0a1进行了测试)。

© www.soinside.com 2019 - 2024. All rights reserved.