是否有一个函数可以以树形式打印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)
不,没有内置功能可以做到这一点,你必须建立自己的。但是知道布局和绘制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进行了测试)。