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?
Antwort
Zu viele Anzeigen?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:
- wickelt(f) gibt ein Objekt zurück, zum Beispiel O1 . Sie ist Gegenstand der Klasse Partial
- 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.
- See previous answers
- Weitere Antworten anzeigen