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

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

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.

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