Ich habe Python-Klassen mit Objektattributen, die nur als Teil der Ausführung des Konstruktors deklariert sind:
%Vor% Wenn ich jetzt entweder help(Foo)
verwende oder versuche, Foo
in Sphinx zu dokumentieren, werden die Attribute self.basepath
und self.availableruns
nicht angezeigt. Das ist ein Problem für Benutzer unserer API.
Ich habe versucht, nach einem Standardweg zu suchen, um sicherzustellen, dass diese "dynamisch deklarierten" Attribute vom Parser gefunden werden können (und vorzugsweise geocodiert werden), aber bisher kein Glück. Irgendwelche Vorschläge? Danke.
Sie könnten eine Klassenvariable mit demselben Namen wie die Instanzvariable definieren. Diese Klassenvariable wird dann von der Instanzvariable beschattet, wenn Sie sie festlegen. ZB:
%Vor% Wenn die Instanzvariable einen nützlichen unveränderlichen Standardwert hat (z. B. None oder das leere Tupel), können Sie etwas Speicher sparen, indem Sie die Variable nicht setzen, wenn sie ihren Standardwert haben soll . Natürlich wird dieser Ansatz nicht funktionieren, wenn Sie über eine Instanzvariable sprechen, die Sie möglicherweise löschen möchten (z. B. del foo.availableruns
) - aber ich finde, das ist kein sehr häufiger Fall.
Wenn du sphinx benutzt und "autoattribute" gesetzt hast, sollte dies entsprechend dokumentiert werden. Oder, je nachdem, was Sie gerade tun, können Sie direkt die Sphinx .. py:attribute::
-Direktive verwenden.
Ich habe versucht, nach einem Standardweg zu suchen, um sicherzustellen, dass diese "dynamisch deklarierten" Attribute vom Parser gefunden werden können (und vorzugsweise geocodiert werden), aber bisher kein Glück. Irgendwelche Vorschläge?
Sie können niemals von einem Parser "erkannt" werden.
Python hat setattr
. Der vollständige Satz von Attributen ist in keinem Sinne des Wortes "nachweisbar".
Sie müssen sie unbedingt im Docstring beschreiben.
[Es sei denn, Sie wollen eine Menge Metaprogrammierungen machen, um Docstrings aus Dingen zu erzeugen, die Sie aus inspect
oder etwas gesammelt haben. Selbst dann wäre Ihre "Lösung" unvollständig, sobald Sie setattr
verwenden.]
Tags und Links python attributes python-sphinx documentation docstring