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'}