Middle+
Kas ir dekoratoru rūpnīca?
sobes.tech AI
Atbilde no AI
Dekoratoru rūpnīca ir funkcija, kas atgriež dekoratoru. Tā pieņem argumentus, kas konfigurē atgrieztā dekoratora uzvedību. Tas ļauj izveidot atkārtoti lietojamus dekoratorus ar dažādu uzvedību atkarībā no nodotajiem parametriem.
# Dekoratoru rūpnīcas funkcija
def my_decorator_factory(prefix):
# Iekšēja funkcija (dekorators), kas pieņem dekorējamo funkciju
def my_decorator(func):
# Vēl viena iekšēja funkcija (apvalks), kas veic dekoratora darbības
def wrapper(*args, **kwargs):
print(f"{prefix}: Pirms funkcijas {func.__name__} izsaukšanas")
result = func(*args, **kwargs)
print(f"{prefix}: Pēc funkcijas {func.__name__} izsaukšanas")
return result
return wrapper
return my_decorator
# Izmantojot rūpnīcu, lai izveidotu dekoratorus ar dažādiem prefiksiem
@my_decorator_factory("DEBUG")
def some_function():
print("Veic some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f"Veic another_function ar argumentiem {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Rezultāts: {result}")
Galvenie soļi:
- Definē ārējā funkcija (rūpnīca) ar parametriem.
- Rūpnīcas iekšienē definē dekoratora funkciju, kas pieņem dekorējamo funkciju.
- Dekoratora funkcijas iekšienē definē apvijšanas funkciju, kas satur dekoratora loģiku un var izmantot rūpnīcas parametrus un dekorētās funkcijas argumentus.
- Dekoratora funkcija atgriež apvijšanas funkciju.
- Rūpnīcas funkcija atgriež dekoratora funkciju.
Tas ir noderīgi, veidojot elastīgus un konfigurējamus dekoratorus.