Kjeding og stabling av dekoratører
Sveip for å vise menyen
Når du arbeider med dekoratører i Python, må du ofte bruke mer enn én dekoratør på en enkelt funksjon. Dette kalles stabling eller kjedekobling av dekoratører. Du stabler dekoratører ved å plassere flere dekoratørlinjer, én etter én, rett over funksjonsdefinisjonen. Rekkefølgen du stabler dekoratørene i er viktig fordi det påvirker hvordan funksjonen pakkes inn og hvordan hver dekoratør samhandler med de andre. Dekoratøren som er nærmest funksjonen blir brukt først, og hver påfølgende dekoratør pakker inn resultatet av den forrige. Dette betyr at dekoratøren øverst i stabelen er det ytterste laget, mens den nærmest funksjonen er det innerste.
Eksempelet under definerer to dekoratører, decorator_one og decorator_two, som er stablet over en funksjon kalt greet. Rekkefølgen på stablingen avgjør hvordan dekoratørene blir brukt.
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")
Legg merke til at decorator_two brukes først på greet, og deretter omslutter decorator_one resultatet. Dette betyr at dekoratøren nærmest funksjonen er den innerste, og den øverste er den ytterste. Rekkefølgen på stablingen er viktig, da den påvirker oppførselen til den dekorerte funksjonen.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår