Ich versuche, eine Klassenvererbung in Python durchzuführen. Ich möchte, dass jede Klasse und jede geerbte Klasse gute Dokumentzeichenfolgen hat. Ich denke, für die geerbte Klasse möchte ich:
- erben Sie die Basisklasse docstring
- Fügen Sie möglicherweise relevante zusätzliche Dokumentation an die Dokumentzeichenfolge an
Gibt es eine (möglicherweise elegante oder pythonische) Möglichkeit, diese Art der Manipulation von Dokumentenstrings in einer Klassenvererbungssituation durchzuführen? Wie wäre es mit Mehrfachvererbung?
python
inheritance
documentation
Craig McQueen
quelle
quelle
inspect.getdoc
wird der Vererbungsbaum durchsucht, bis eine Dokumentzeichenfolge gefunden wird.Antworten:
Du bist nicht der Einzige!
comp.lang.python
Vor einiger Zeit gab es eine Diskussion darüber, und ein Rezept wurde erstellt. Schau es dir hier an .quelle
Sie können die Dokumentzeichenfolgen einfach verketten:
Das ist jedoch nutzlos. Die meisten Tools zur Generierung von Dokumentationen ( einschließlich Sphinx und Epydoc ) ziehen bereits übergeordnete Dokumentzeichenfolgen, auch für Methoden. Sie müssen also nichts tun.
quelle
Nicht besonders elegant, aber einfach und direkt:
Jetzt:
quelle
Init docstring
, gibt es eine Möglichkeit, dies in der Definition von zu tunY
? Die einzige Möglichkeit, dies zu tun, besteht darin,__init__.__doc__ = X.__init__.__doc__ + " Also another param"
der__init__
Definition in zu folgen,Y
aber dies scheint die Formatierung zu beeinträchtigen und zusätzliche zusätzliche Leerzeichen zu verursachen.Ein gemischter Stil, der sowohl die geerbte Docstring-Syntax als auch die bevorzugte Reihenfolge beibehalten kann, kann sein:
Mit der gleichen Ausgabe wie Alex:
Dünnes Eis: Wenn Sie mit Docstring spielen, kann Ihr Modul unbrauchbar werden
python -OO
. Erwarten Sie Folgendes :quelle
Ich habe custom_inherit geschrieben , um einige einfache, leichte Tools für die Handhabung der Docstring-Vererbung bereitzustellen.
Es enthält auch einige nette Standardstile zum Zusammenführen verschiedener Arten von Dokumentzeichenfolgen (z. B. Numpy-, Google- und reST-formatierte Dokumentzeichenfolgen). Sie können auch ganz einfach Ihren eigenen Stil angeben.
Überlappende Docstring-Abschnitte werden auf den Abschnitt des Kindes verschoben, andernfalls werden sie mit einer schönen Formatierung zusammengeführt.
quelle