Ich habe Python Klassen deklariert in der folgenden Art und Weise dokumentieren:Wie Strukturfelder in Python mit Sphinx
class Foo(Structure):
_fields_ = [
("vr", c_double),
("vi", c_double),
("vm", c_float),
("va", c_float)]
Sie Subklassen von Structure
sind, weil ich ctypes
zu wickeln eine C-DLL verwende und diese sind die Spiegel von die C-Strukturen. Ich kann nicht herausfinden, wie man Dokumentation für diese erzeugt. Die automatisch generierte Dokumentation ist sehr hässlich und nutzlos: va Structure/Union member vi Structure/Union member vm Structure/Union member vr Structure/Union member
Hat jemand eine Idee, wie ich diese definieren kann?
Ich wollte nur klarstellen, dass _fields_
Art von tatsächlich nicht existiert. Es ist ein besonderes Feature von ctypes
, das eine Möglichkeit bietet, Member so zu deklarieren, dass Sie mit einer C-Struktur ausgerichtet werden können. Also, wenn ich das Objekt instanziieren: foo = Foo()
dann würde ich niemals auf _fields_
sondern die Mitglieder direkt zugreifen, als ob sie nur als normale Instanzvariablen deklariert wurden. Also, mit der obigen Instanz, um auf vr
zuzugreifen, würde ich etwas wie print foo.vr
tun.
Was mich hier stolpert ist, dass ich Beschreibungen dieser Variablen hinzufügen möchte. Die automatische Generierung nennt sie "Struktur-/Union-Mitglieder", was sinnvoll ist, da sie Mitglieder einer Struktur sind, aber ich möchte eine anschaulichere und nützlichere Beschreibung hinzufügen. Zum Beispiel möchte ich eine Notiz hinzufügen, dass "vm" ist Magnitude und "va" ist Winkel.
Die ' Foo' Klasse sollte einen Docstring haben. In diesem Docstring können Sie die '_fields_' Variable beschreiben. Vielleicht, indem man seine Definition einfach wörtlich mit einbezieht. Daran kann ich denken. – mzjn
Danke. Das scheint ein sehr vernünftiger Vorschlag zu sein und ich werde es versuchen. – zaknotzach
"* Ich möchte Beschreibungen dieser Variablen hinzufügen *". Sie können das tun, und ich habe Beispiele zur Verfügung gestellt. Was genau stolpert dich? – mzjn