Middle+
Čo je továreň na dekoratéri?
sobes.tech AI
Odpoveď od AI
Fabrika dekoratorjev je funkcija, ki vrne dekorator. Sprejema argumente za nastavitev vedenja vrnjenega dekoratorja. To omogoča ustvarjanje večkrat uporabnih dekoratorjev z različnim vedenjem glede na podane parametre.
# Funkcija-fabrika dekoratorjev
def my_decorator_factory(prefix):
# Notranja funkcija (dekorator), ki sprejema funkcijo za dekoriranje
def my_decorator(func):
# Še ena notranja funkcija (ovijalec), ki vsebuje logiko dekoratorja
def wrapper(*args, **kwargs):
print(f"{prefix}: Pred klicem funkcije {func.__name__}")
result = func(*args, **kwargs)
print(f"{prefix}: Po klicu funkcije {func.__name__}")
return result
return wrapper
return my_decorator
# Uporaba fabrike za ustvarjanje dekoratorjev z različnimi predponami
@my_decorator_factory("DEBUG")
def some_function():
print("Izvajanje some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f"Izvajanje another_function z argumenti {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Rezultat: {result}")
Glavni koraki:
- Definira se zunanja funkcija (fabrika) z argumenti.
- Znotraj fabrike se definira funkcija-dekorator, ki sprejema funkcijo za dekoracijo.
- Znotraj funkcije-dekorator se definira funkcija-ovijalec, ki vsebuje logiko dekoratorja in lahko uporablja parametre iz fabrike ter argumente dekorirane funkcije.
- Funkcija-dekorator vrne funkcijo-ovijalec.
- Fabrika vrne funkcijo-dekorator.
To je uporabno za ustvarjanje prilagodljivih in konfigurabilnih dekoratorjev.