Heim >Backend-Entwicklung >Python-Tutorial >Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen gilt

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen gilt

王林
王林nach vorne
2023-04-12 17:25:071550Durchsuche

Beispiel

Dekoratoren in Python können entweder Funktionen oder Klassen sein. In den vorherigen Abschnitten haben wir Funktionsdekoratoren verwendet. Jetzt lernen wir, wie man Klassendekoratoren definiert.

Wir werden eine benutzerdefinierte Klasse definieren, die als Dekorateur fungiert. Wenn eine Funktion mit einer Klasse dekoriert/geändert wird, wird die Funktion zu einer Instanz dieser Klasse. Finden wir es heraus:

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen gilt

Wie oben gezeigt, haben wir einen einfachen Klassendekorator erstellt. Damit eine Klasse zum Dekorator wird, muss sie die Methode __call__() implementieren. Die Methode __call__() funktioniert genauso wie eine Wrapper-Funktion in einem Funktionsdekorator.

Lassen Sie uns nun diese Klasse verwenden, um eine Funktion zu dekorieren:

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen gilt

Die Ausgabe der Programmausführung ist wie folgt: # 🎜🎜## 🎜🎜#

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen giltKlassendekorator mit *args- und **kwargs-Parametern

Damit der Klassendekorator Parameter verwenden kann, verwenden Sie *args und **Hinweis: Wir müssen diese Parameter verwenden, um die Methode __call__() zu implementieren und an die geänderte Funktion zu übergeben. Die allgemeine Darstellungsmethode lautet wie folgt:

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen giltIm obigen Code akzeptiert die __call__()-Methode des Klassendekorators *args- und **kwargs-Parameter . In der Codezeile übergibt die Aufrufmethode sie an die dekorierte Funktion: self.func(*args,**kwargs).

Jetzt verwenden wir diesen Klassendekorator, um eine Funktion zu dekorieren:

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen giltKlassendekoration Dekorationsfunktion

#🎜 🎜 #Das Ausgabeergebnis der Ausführung des Programms ähnelt dem folgenden:

Hallo Solo Cui

Klassendekorator mit Return-Anweisung #🎜 🎜#Denken Sie daran, dass wir in der Wrapper-Funktion des Funktionsdekorators das Schlüsselwort return verwenden können, um die dekorierte Funktion zurückzugeben. Wir machen hier dasselbe, aber innerhalb der __call__-Methode.

Der Klassendekorator, der das Ergebnis zurückgibt

Python-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen giltDas Ausgabeergebnis der Programmausführung lautet wie folgt:

#🎜 🎜#TRACY CUI

Wie oben gezeigt, geben wir die geänderte Funktion in der __call__-Methode zurück:

return self.func(* args ,**args)

An diesem Punkt ist die Einführung in Pythons Dekoratoren abgeschlossen.

Das obige ist der detaillierte Inhalt vonPython-Programmierung: Wie implementiert man Klassendekoratoren und Anwendungen? Wichtige Punkte, die es zu begreifen gilt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen