Middle+
Kas yra dekoratorių gamykla?
sobes.tech AI
Atsakymas iš AI
Dekoratorių gamykla – tai funkcija, kuri grąžina dekoratorių. Ji priima argumentus, skirtus grąžinamo dekoratoriaus elgsenos nustatymui. Tai leidžia kurti daugkartinio naudojimo dekoratorius su skirtingu elgesiu, priklausomai nuo perduotų parametrų.
# Dekoratorių gamyklos funkcija
def my_decorator_factory(prefix):
# Vidinė funkcija (dekoratorius), kuri priima dekoruojamą funkciją
def my_decorator(func):
# Dar viena vidinė funkcija (apvyniojimas), kuri atlieka dekoratoriaus veiksmus
def wrapper(*args, **kwargs):
print(f"{prefix}: Prieš kviečiant funkciją {func.__name__}")
result = func(*args, **kwargs)
print(f"{prefix}: Po funkcijos {func.__name__} kvietimo")
return result
return wrapper
return my_decorator
# Naudojant gamyklą kuriant dekoratorius su skirtingais prefiksais
@my_decorator_factory("DEBUG")
def some_function():
print(" vykdoma some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f" vykdoma another_function su argumentais {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Rezultatas: {result}")
Pagrindiniai žingsniai:
- Apibrėžiama išorinė funkcija (gamyklos funkcija) su parametrais.
- Gamyklos viduje apibrėžiama dekoratoriaus funkcija, kuri priima dekoruojamą funkciją.
- Dekoratoriaus funkcijos viduje apibrėžiama apvyniojimo funkcija, kuri turi dekoratoriaus logiką ir gali naudoti gamyklos parametrus bei dekoruojamos funkcijos argumentus.
- Dekoratoriaus funkcija grąžina apvyniojimo funkciją.
- Gamyklos funkcija grąžina dekoratoriaus funkciją.
Tai naudinga kuriant lankstus ir pritaikomus dekoratorius.