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 decoratorregels direct boven de functiedefinitie te plaatsen. De volgorde waarin je decorators stapelt is belangrijk, 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 wikkelt het resultaat van de vorige in. 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 gedefinieerd, decorator_one en decorator_two, die boven een functie genaamd greet worden gestapeld. 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")
Merk 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.