sphinx.ext.inheritance_diagram --包括继承关系图¶
Added in version 0.6.
此扩展允许您包括继承关系图,通过 Graphviz extension 。
它增加了这条指令:
- .. inheritance-diagram::¶
该指令有一个或多个参数,每个参数都给出一个模块或类名。类名可以是非限定的;在这种情况下,它们被视为存在于当前描述的模块中(请参见
py:module)。对于每个给定的类以及每个给定模块中的每个类,确定基类。然后,从所有类及其基类生成一个图,然后通过有向图的graph viz扩展呈现该图。
此指令支持名为
parts如果给定,它必须是一个整数,建议指令在显示的名称中保留那么多点分隔部分(从右到左)。例如,parts=1将只显示类名称,而不显示包含它们的模块的名称。在 2.0 版本发生变更: For的价值
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: (no value)¶
Added in version 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]- 默认:
{}
继承关系图的graph viz节点属性的字典。
例如::
inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, color='dodgerblue1', style='filled')
- inheritance_edge_attrs¶
- 类型:
dict[str, str | int | float | bool]- 默认:
{}
继承图的GRAPHIZ边缘属性词典。
- inheritance_alias¶
- 类型:
dict[str, str]- 默认:
{}
允许将类的完全限定名映射到自定义值(当不希望公开类的底层路径时非常有用,例如它是私有类,不应由用户实例化)。
例如::
inheritance_alias = {'_pytest.Magic': 'pytest.Magic'}