Sphinx generiert standardmäßig keine Dokumente für __init __ (self). Ich habe folgendes versucht:
.. automodule:: mymodule
:members:
und
..autoclass:: MyClass
:members:
Wenn Sie in conf.py Folgendes festlegen, wird nur die __init __ (selbst) docstring an die Klasse docstring angehängt ( die Sphinx-Autodoc-Dokumentation scheint zuzustimmen, dass dies das erwartete Verhalten ist, erwähnt jedoch nichts in Bezug auf das Problem, das ich zu lösen versuche):
autoclass_content = 'both'
python
python-sphinx
autodoc
Jacob Marmor
quelle
quelle
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
-> Daher sollte es nicht nur die__init__(self)
, sondern auch die Klassendokumentation sein, wenn Sie diese haben. Können Sie einen Testfall bereitstellen, denn wenn dies der Fall ist, fühlt es sich wie ein Fehler an, oder?Antworten:
Hier sind drei Alternativen:
Um sicherzustellen, dass dies
__init__()
immer dokumentiert ist, können Sie esautodoc-skip-member
in conf.py verwenden. So was:Dies definiert ausdrücklich, dass
__init__
nicht übersprungen werden soll (was standardmäßig der Fall ist). Diese Konfiguration wird einmal angegeben und erfordert kein zusätzliches Markup für jede Klasse in der ersten Quelle.Die
special-members
Option wurde in Sphinx 1.1 hinzugefügt .__special__
Dadurch werden "spezielle" Mitglieder (solche mit Namen wie ) von autodoc dokumentiert.Seit Sphinx 1.2 verwendet diese Option Argumente, wodurch sie nützlicher ist als zuvor.
Verwendung
automethod
:Dies muss für jede Klasse hinzugefügt werden (kann nicht verwendet werden
automodule
, wie in einem Kommentar zur ersten Überarbeitung dieser Antwort ausgeführt).quelle
special-members
mitautomodule
. Verwendung:special-members: __init__
zu dokumentieren nur__init__
.Du warst nah. Sie können die
autoclass_content
Option in Ihrerconf.py
Datei verwenden:quelle
autoclass_content = 'both'
Option festzulegen , mit der die Init- Methode dokumentiert wurde , aber die automatische Zusammenfassung wurde zweimal angezeigt.In den letzten Jahren habe ich mehrere Varianten geschrieben
autodoc-skip-member
Rückrufe für verschiedene unabhängige Python - Projekte , weil ich Methoden wollte wie__init__()
,__enter__()
und__exit__()
in meiner API - Dokumentation zu zeigen (immerhin diese „spezielle Methoden“ sind Teil der API und was einen besseren Ort zu dokumentieren Sie sie als in der Dokumentzeichenfolge der speziellen Methode).Kürzlich habe ich die beste Implementierung genommen und sie zu einem meiner Python-Projekte gemacht ( hier ist die Dokumentation ). Die Implementierung läuft im Wesentlichen auf Folgendes hinaus:
Ja, es gibt mehr Dokumentation als Logik :-). Der Vorteil der Definition eines
autodoc-skip-member
solchen Rückrufs gegenüber der Verwendung derspecial-members
Option (für mich) besteht darin, dass diespecial-members
Option auch die Dokumentation von Eigenschaften wie__weakref__
(verfügbar für alle Klassen neuen Stils, AFAIK) ermöglicht, die ich als Rauschen betrachte und die überhaupt nicht nützlich sind. Der Callback-Ansatz vermeidet dies (da er nur für Funktionen / Methoden funktioniert und andere Attribute ignoriert).quelle
setup(app)
muss, um von Sphinx ausgeführt zu werden.__init__
Methode eine nicht leere Dokumentzeichenfolge hat. Macht es?Obwohl dies ein älterer Beitrag ist, gibt es für diejenigen, die ihn ab sofort nachschlagen, auch eine andere Lösung, die in Version 1.8 eingeführt wurde. Gemäß der Dokumentation können Sie den
special-member
Schlüssel in den autodoc_default_options zu Ihrem hinzufügenconf.py
.Beispiel:
quelle
Dies ist eine Variante, die nur enthält,
__init__
wenn sie Argumente enthält:quelle