Frage

Wenn ich rufe

help(Mod.Cls.f)

(Mod ist ein C-Erweiterungsmodul), erhalte ich die Ausgabe

Help on method_descriptor:

f(...)
    doc_string

Was brauche ich, um so zu tun, dass die Hilfe Ausgabe des Formulars ist

Help on method f in module Mod:

f(x, y, z)
    doc_string

, wie es ist für random.Random.shuffle zum Beispiel?

Mein PyMethodDef Eintrag ist zur Zeit:

{ "f", f, METH_VARARGS, "doc_string" }
War es hilfreich?

Lösung

Sie können nicht. Das inspiziert Modul, das, was pydoc "und‚Hilfe ()‘verwendet wird, hat keine Möglichkeit, herauszufinden, was die genaue Signatur einer C-Funktion ist. Das Beste, was Sie tun können, ist, was die eingebauten Funktionen tun: zählen die Signatur in der ersten Zeile des docstring:

>>> help(range)
Help on built-in function range in module __builtin__:

range(...)
    range([start,] stop[, step]) -> list of integers

...

Die docstring Vernunft random.shuffle sieht „richtig“ ist, dass es keine C-Funktion ist. Es ist eine Funktion in Python geschrieben.

Andere Tipps

Thomas Antwort ist richtig auf, natürlich.

Ich würde einfach hinzufügen, dass viel C Erweiterungsmodule eine Python „Wrapper“ um sie herum, so dass sie Standardfunktionssignaturen und andere dynamische Sprachfeatures (wie das Descriptor-Protokoll) unterstützen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top