sphinx.ext.inheritance_diagram – Vererbungdiagramme einbinden¶
Hinzugefügt in Version 0.6.
Diese Erweiterung ermöglicht das Einbinden von Vererbungdiagrammen, die über die Graphviz Erweiterung gerendert werden.
Sie fügt diese Direktive hinzu
- .. inheritance-diagram::¶
Diese Direktive hat ein oder mehrere Argumente, die jeweils einen Modul- oder Klassennamen angeben. Klassennamen können unqualified sein; in diesem Fall wird angenommen, dass sie im aktuell beschriebenen Modul existieren (siehe
py:module).Für jede angegebene Klasse und jede Klasse in jedem angegebenen Modul werden die Basisklassen ermittelt. Dann wird aus allen Klassen und ihren Basisklassen ein Graph generiert, der dann über die Graphviz-Erweiterung zu einem gerichteten Graphen gerendert wird.
Diese Direktive unterstützt eine Option namens
parts, die, wenn angegeben, eine Ganzzahl sein muss, die die Direktive anweist, so viele Punkt-getrennte Teile in den angezeigten Namen beizubehalten (von rechts nach links). Zum Beispiel wird beiparts=1nur der Klassenname angezeigt, ohne die Namen der Module, die sie enthalten.Geändert in Version 2.0: Der Wert für
partskann auch negativ sein und gibt an, wie viele Teile von links entfernt werden sollen. Wenn beispielsweise alle Klassennamen mitlib.beginnen, können Sie:parts: -1angeben, um dieses Präfix aus den angezeigten Knotennamen zu entfernen.Die Direktive unterstützt auch eine Flag-Option
private-bases; wenn diese angegeben ist, werden private Basisklassen (die, deren Name mit_beginnt) eingeschlossen.Sie können die Option
captionverwenden, um dem Diagramm eine Bildunterschrift zu geben.Geändert in Version 1.1: Option
private-baseshinzugefügt; zuvor wurden alle Basen immer eingeschlossen.Geändert in Version 1.5: Option
captionhinzugefügtSie unterstützt auch eine Option
top-classes, die ein oder mehrere durch Kommas getrennte Klassennamen erfordert. Wenn angegeben, stoppt die Vererbungstraversierung bei den angegebenen Klassennamen. Gegeben das folgende Python-Modul""" 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): passWenn Sie ein Modul im Vererbungdiagramm wie folgt angegeben haben
.. inheritance-diagram:: dummy.test :top-classes: dummy.test.B, dummy.test.C
Alle Basisklassen, die Vorfahren von
top-classessind und im selben Modul definiert sind, werden als eigenständige Knoten gerendert. In diesem Beispiel wird Klasse A als eigenständiger Knoten im Graphen gerendert. Dies ist ein bekanntes Problem aufgrund der internen Funktionsweise dieser Erweiterung.Wenn Sie Klasse A (oder andere Vorfahren) nicht sichtbar haben möchten, geben Sie nur die Klassen an, für die Sie das Diagramm generieren möchten, wie folgt
.. inheritance-diagram:: dummy.test.D dummy.test.E dummy.test.F :top-classes: dummy.test.B, dummy.test.C
Geändert in Version 1.7: Option
top-classeshinzugefügt, um den Geltungsbereich von Vererbungsgraphen zu begrenzen.- :include-subclasses: (kein Wert)¶
Hinzugefügt in Version 8.2.
Wenn angegeben, werden alle Unterklassen der Klassen ebenfalls zum Diagramm hinzugefügt.
Gegeben das obige Python-Modul können Sie Ihr Vererbungdiagramm wie folgt angeben
.. inheritance-diagram:: dummy.test.A :include-subclasses:
Dies schließt die Klassen A, B, C, D, E und F in das Vererbungdiagramm ein, aber keine anderen Klassen im Modul
dummy.test.
Beispiele¶
Die folgenden sind verschiedene Vererbungdiagramme für die interne Klasse InheritanceDiagram, die die Direktive implementiert.
Mit vollständigen Namen
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram

Nur Klassennamen anzeigen
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:parts: 1

Stoppen des Diagramms bei sphinx.util.docutils.SphinxDirective (der höchsten Oberklasse, die noch Teil von Sphinx ist), und Entfernen des gemeinsamen am weitesten links stehenden Teils (sphinx) aus allen Namen
.. inheritance-diagram:: sphinx.ext.inheritance_diagram.InheritanceDiagram
:top-classes: sphinx.util.docutils.SphinxDirective
:parts: -1

- class sphinx.ext.inheritance_diagram.InheritanceDiagram¶
Die interne Klasse, die die Direktive
inheritance-diagramimplementiert.
Konfiguration¶
- inheritance_graph_attrs¶
- Typ:
dict[str, str | int | float | bool]- Standard:
{}
Ein Wörterbuch von Graphviz-Graphattributen für Vererbungdiagramme.
Zum Beispiel
inheritance_graph_attrs = dict(rankdir="LR", size='"6.0, 8.0"', fontsize=14, ratio='compress')
- inheritance_node_attrs¶
- Typ:
dict[str, str | int | float | bool]- Standard:
{}
Ein Wörterbuch von Graphviz-Knotenattributen für Vererbungdiagramme.
Zum Beispiel
inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, color='dodgerblue1', style='filled')
- inheritance_edge_attrs¶
- Typ:
dict[str, str | int | float | bool]- Standard:
{}
Ein Wörterbuch von Graphviz-Kantenattributen für Vererbungdiagramme.
- inheritance_alias¶
- Typ:
dict[str, str]- Standard:
{}
Ermöglicht die Abbildung des vollständigen qualifizierten Namens der Klasse auf benutzerdefinierte Werte (nützlich, wenn die Offenlegung des zugrunde liegenden Pfads einer Klasse unerwünscht ist, z. B. wenn es sich um eine private Klasse handelt und nicht vom Benutzer instanziiert werden sollte).
Zum Beispiel
inheritance_alias = {'_pytest.Magic': 'pytest.Magic'}