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")
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.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.