990 Stimmen

Was macht functools.wraps?

In einem Kommentar zu diesem Antwort auf eine andere Frage Jemand sagte, er sei sich nicht sicher, was er mit den functools.wraps getan hat. Ich stelle also diese Frage, damit es eine Aufzeichnung davon auf StackOverflow für zukünftige Referenzen gibt: Was bedeutet functools.wraps was genau tun?

-6voto

Yong Yang Punkte 1090

Kurz gesagt, functools.wraps ist einfach eine normale Funktion. Betrachten wir dieses offizielle Beispiel . Mit Hilfe des Quellcode Im Folgenden finden Sie weitere Einzelheiten zur Implementierung und zu den einzelnen Schritten:

  1. wickelt(f) gibt ein Objekt zurück, zum Beispiel O1 . Sie ist Gegenstand der Klasse Partial
  2. Der nächste Schritt ist @O1... was die Dekorationsschreibweise in Python ist. Sie bedeutet

wrapper=O1.__call__(wrapper)

Überprüfung der Implementierung von __Anruf__ sehen wir, dass nach diesem Schritt (die linke Seite) Umschlag wird das Objekt, das durch self.func(*self.args, *args, **newkeywords) Überprüfung der Erstellung von O1 in __neu__ wissen wir self.func ist die Funktion update_wrapper . Er verwendet den Parameter *args die rechte Seite Umschlag als seinen 1. Parameter. Überprüfung des letzten Schritts von update_wrapper kann man die rechte Seite sehen Umschlag zurückgegeben, wobei einige der Attribute nach Bedarf geändert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X