Make-Funktion haben Ellipsen für Argumente in der Hilfe () -Funktion

8

Wenn Sie help(vars) eingeben, wird Folgendes erzeugt:

%Vor%

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 ...

angezeigt     
zondo 27.02.2016, 02:53
quelle

1 Antwort

8

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:

%Vor%

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:

%Vor%

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%     
Sebastian Kreft 13.03.2016, 12:29
quelle

Tags und Links