sphinx.ext.inheritance_diagram
– 包含繼承圖¶
版本 0.6 新增。
此擴充功能允許您包含繼承圖,透過 Graphviz 擴充功能
渲染。
它新增了此指令
- .. inheritance-diagram::¶
此指令有一個或多個引數,每個引數給定一個模組或類別名稱。類別名稱可以是不完整的;在這種情況下,它們被認為存在於當前描述的模組中(請參閱
py:module
)。對於每個給定的類別,以及每個給定模組中的每個類別,都會確定基底類別。然後,從所有類別及其基底類別,生成一個圖形,然後通過 graphviz 擴充功能將其渲染為有向圖。
此指令支援一個名為
parts
的選項,如果給定,則必須是一個整數,建議指令在顯示的名稱中保留那麼多點分隔的部分(從右到左)。例如,parts=1
將僅顯示類別名稱,而不顯示包含它們的模組名稱。在版本 2.0 中變更:
parts
的值也可以是負數,表示從左側刪除多少部分。例如,如果您的所有類別名稱都以lib.
開頭,您可以給定:parts: -1
以從顯示的節點名稱中刪除該前綴。該指令還支援
private-bases
標記選項;如果給定,將包含私有基底類別(名稱以_
開頭的那些)。您可以使用
caption
選項為圖表提供標題。在版本 1.1 中變更:新增
private-bases
選項;以前,始終包含所有基底類別。在版本 1.5 中變更:新增
caption
選項它還支援
top-classes
選項,該選項需要一個或多個以逗號分隔的類別名稱。如果指定,繼承遍歷將在指定的類別名稱處停止。給定以下 Python 模組""" A / \ B C / \ / \ E D F """ class A: pass class B(A): pass class C(A): pass class D(B, C): pass class E(B): pass class F(C): pass
如果您在繼承圖中指定了一個模組,如下所示
.. inheritance-diagram:: dummy.test :top-classes: dummy.test.B, dummy.test.C
作為
top-classes
祖先且也在同一模組中定義的任何基底類別都將渲染為獨立節點。在此範例中,類別 A 將在圖形中渲染為獨立節點。這是由於此擴充功能在內部工作方式而導致的已知問題。如果您不希望類別 A(或任何其他祖先)可見,那麼僅指定您想要為其產生圖表的類別,如下所示
.. inheritance-diagram:: dummy.test.D dummy.test.E dummy.test.F :top-classes: dummy.test.B, dummy.test.C
在版本 1.7 中變更:新增
top-classes
選項以限制繼承圖的範圍。- :include-subclasses: (無 值)¶
版本 8.2 新增。
如果給定,類別的任何子類別也將新增到圖表中。
給定上面 Python 模組中的範例,您可以像這樣指定您的繼承圖
.. inheritance-diagram:: dummy.test.A :include-subclasses:
這將在繼承圖中包含類別 A、B、C、D、E 和 F,但不包含模組
dummy.test
中的其他類別。
範例¶
以下是內部 InheritanceDiagram
類別(實作指令)的不同繼承圖。
使用完整名稱
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram

僅顯示類別名稱
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:parts: 1

在 sphinx.util.docutils.SphinxDirective
處停止圖表(仍然是 Sphinx 一部分的最高超類別),並從所有名稱中刪除常見的最左側部分 (sphinx
)
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:top-classes: sphinx.util.docutils.SphinxDirective
:parts: -1

- class sphinx.ext.inheritance_diagram.InheritanceDiagram¶
實作
inheritance-diagram
指令的內部類別。
設定¶
- inheritance_graph_attrs¶
- 類型:
dict[str, str | int | float | bool]
- 預設:
{}
用於繼承圖的 graphviz 圖形屬性字典。
例如
inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"', fontsize=14, ratio='compress')
- inheritance_node_attrs¶
- 類型:
dict[str, str | int | float | bool]
- 預設:
{}
用於繼承圖的 graphviz 節點屬性字典。
例如
inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, color='dodgerblue1', style='filled')
- inheritance_edge_attrs¶
- 類型:
dict[str, str | int | float | bool]
- 預設:
{}
用於繼承圖的 graphviz 邊緣屬性字典。
- inheritance_alias¶
- 類型:
dict[str, str]
- 預設:
{}
允許將類別的完整限定名稱映射到自訂值(當公開類別的底層路徑不合適時很有用,例如,它是一個私有類別,不應由使用者實例化)。
例如
inheritance_alias = {'_pytest.Magic': 'pytest.Magic'}