Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verkettung und Stapelung von Dekoratoren | Mastering Python Iterators and Decorators
Funktionale Programmierkonzepte in Python

bookVerkettung und Stapelung von Dekoratoren

Swipe um das Menü anzuzeigen

Beim Arbeiten mit Dekoratoren in Python besteht häufig die Notwendigkeit, mehr als einen Dekorator auf eine einzelne Funktion anzuwenden. Dies wird als Stapelung oder Verkettung von Dekoratoren bezeichnet. Die Stapelung erfolgt, indem mehrere Dekorator-Zeilen direkt übereinander oberhalb der Funktionsdefinition platziert werden. Die Reihenfolge der Dekoratoren ist entscheidend, da sie beeinflusst, wie die Funktion umschlossen wird und wie die einzelnen Dekoratoren miteinander interagieren. Der Dekorator, der der Funktion am nächsten steht, wird zuerst angewendet, und jeder weitere Dekorator umschließt das Ergebnis des vorherigen. Das bedeutet, dass der oberste Dekorator der äußerste Wrapper ist, während derjenige, der der Funktion am nächsten steht, der innerste ist.

Im folgenden Beispiel werden zwei Dekoratoren, decorator_one und decorator_two, definiert und über einer Funktion namens greet gestapelt. Die Reihenfolge der Stapelung bestimmt, wie die Dekoratoren angewendet werden.

123456789101112131415161718192021222324252627
# Prints messages before and after the function call def decorator_one(func): def wrapper(*args, **kwargs): print("Decorator One: Before") result = func(*args, **kwargs) print("Decorator One: After") return result return wrapper # Also prints messages before and after the function call def decorator_two(func): def wrapper(*args, **kwargs): print("Decorator Two: Before") result = func(*args, **kwargs) print("Decorator Two: After") return result return wrapper # Stacking decorators # decorator_two is applied first (innermost), # then decorator_one wraps the result (outermost) @decorator_one @decorator_two def greet(name): print(f"Hello, {name}!") greet("Alice")
copy
Note
Hinweis

Beachte, dass decorator_two zuerst auf greet angewendet wird und anschließend decorator_one das Ergebnis umschließt. Das bedeutet, dass der Dekorator, der der Funktion am nächsten steht, der innerste ist, und der oberste der äußerste. Die Reihenfolge des Stapelns ist wichtig, da sie das Verhalten der dekorierten Funktion beeinflusst.

question mark

In welcher Reihenfolge werden gestapelte Dekoratoren in Python angewendet?

Wählen Sie alle richtigen Antworten aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 4. Kapitel 5
some-alt