Wenn Sie help(vars)
eingeben, wird Folgendes erzeugt:
Wenn ich Folgendes mache:
%Vor%zeigt dies an:
%Vor% Wie kann ich es so ändern, dass es zwischen den Klammern mit ...
angezeigt wird wie die eingebaute Funktion vars()
? (Das heißt func(...)
)
Bearbeiten : Es wurde vorgeschlagen, einen Docstring zu verwenden, aber das wird nicht tun, was ich will. Hier ist ein Beispiel:
%Vor%Ergebnis:
%Vor% Sie sehen, x, y
wird immer noch anstelle von ...
Sie haben (mindestens) zwei Alternativen, um zu erreichen, was Sie wollen.
Die beste Alternative wäre, die Methode __str__
der Klasse inspect.Signature
zu überschreiben. Wie es jedoch in C geschrieben ist, ist es nur lesbar.
Um das zu tun, müssen Sie die Klasse wie folgt erweitern:
%Vor%Nach der Definition Ihrer Funktion führen Sie folgendes aus:
%Vor%, die dann Folgendes für help(func)
zurückgeben würde:
Mit diesem Ansatz funktioniert inspect.signature immer noch:
%Vor% Alternativ, wenn es Ihnen nicht wirklich wichtig ist, Ihre Funktion (und wahrscheinlich auch andere Anwendungsfälle) richtig zu untersuchen, können Sie den Wert der __signature__
Ihrer Funktion für ein Objekt definieren, das kein Signature
ist. Beispiel:
erzeugt das Ergebnis:
%Vor% Aber jetzt wird inspect.signature(func)
TypeError: unexpected object <object object at 0x10182e200> in __signature__ attribute
erhöhen.
Hinweis: Diese letzte Version ist ziemlich hacky und ich würde es nicht empfehlen.
Weitere Informationen zu diesen beiden Techniken und zur Funktionsweise der Signatur finden Sie unter PEP 0362 .
Aktualisierung: Für Python 2.7 können Sie Folgendes tun (wahrscheinlich besser mit einem Mock Framework):
%Vor%