Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Decorators Koppelen en Stapelen | Mastering Python Decorators
Functionele Programmeerconcepten in Python

Decorators Koppelen en Stapelen

Veeg om het menu te tonen

Bij het werken met decorators in Python is het vaak nodig om meer dan één decorator op een enkele functie toe te passen. Dit wordt stacken of chaining van decorators genoemd. Decorators worden gestapeld door meerdere decorator-regels direct boven de functiedefinitie te plaatsen. De volgorde waarin je decorators stapelt is van belang, omdat dit bepaalt hoe de functie wordt omwikkeld en hoe elke decorator met de andere samenwerkt. De decorator die het dichtst bij de functie staat, wordt als eerste toegepast, en elke volgende decorator omwikkelt het resultaat van de vorige. Dit betekent dat de decorator bovenaan de stapel de buitenste omwikkeling is, terwijl degene het dichtst bij de functie de binnenste is.

In het onderstaande voorbeeld worden twee decorators, decorator_one en decorator_two, gedefinieerd en gestapeld boven een functie genaamd greet. De stapelvolgorde bepaalt hoe de decorators worden toegepast.

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")
Note
Opmerking

Let op dat decorator_two eerst wordt toegepast op greet, en vervolgens decorator_one het resultaat omhult. Dit betekent dat de decorator die het dichtst bij de functie staat de binnenste is, en de bovenste de buitenste. De volgorde van stapelen is belangrijk, omdat dit het gedrag van je gedecoreerde functie beïnvloedt.

question mark

In welke volgorde worden gestapelde decorators toegepast in Python?

Selecteer alle juiste antwoorden

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 5
some-alt