簡體   English   中英

是否有一種簡單的方法以樹形式打印類的層次結構?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM