[英]Is there a simple way to print a class' hierarchy in tree form?
是否有一個函數可以以樹形式打印python類' git log --graph
,就像git log --graph
for git commits?
我想做的例子:
class A(object): pass
class B(A): pass
class C(B): pass
class D(A): pass
class E(C, D): pass
printtree(E)
輸出可能是什么樣的示例(但變化很好)。 如果mro也可以直接從圖中讀出,那么獎勵積分,就像我從上到下完成的那樣,但如果沒有,那也沒關系。
E
|\
C |
| D
B |
|/
A
|
object
不,沒有內置功能可以做到這一點,你必須建立自己的。 但是要知道布局和繪制ASCII圖是一項復雜的任務,Mercurial圖形代碼(相當於git log --graph
的Python) 非常復雜 。
將圖形布局留給像Graphviz這樣的專用實用程序會更有效率。 有人已經編寫了代碼來執行此操作,請參閱Michele Simionato博士的文章 ,他們轉向:
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進行了測試)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.