Middle+
Ce este o fabrică de decoratori?
sobes.tech AI
Răspuns de la AI
O fabrică de decoratori este o funcție care returnează un decorator. Aceasta acceptă argumente pentru a configura comportamentul decoratorului returnat. Acest lucru permite crearea de decoratori reutilizabili cu comportamente diferite în funcție de parametrii transmiși.
# Funcție-fabrică de decoratori
def my_decorator_factory(prefix):
# Funcție internă (decorator), care acceptă funcția de decorat
def my_decorator(func):
# Altă funcție internă (wrapper), care conține logica decoratorului
def wrapper(*args, **kwargs):
print(f"{prefix}: Înainte de apelarea funcției {func.__name__}")
result = func(*args, **kwargs)
print(f"{prefix}: După apelarea funcției {func.__name__}")
return result
return wrapper
return my_decorator
# Utilizarea fabricii pentru a crea decoratori cu prefixe diferite
@my_decorator_factory("DEBUG")
def some_function():
print("Executarea some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f"Executarea another_function cu argumente {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Rezultat: {result}")
Pașii principali:
- Se definește o funcție externă (fabrica) cu parametri.
- În interiorul fabricii, se definește o funcție decorator care acceptă funcția de decorat.
- În interiorul funcției decorator, se definește o funcție wrapper care conține logica decoratorului și poate folosi parametri din fabrică și argumente ale funcției decorate.
- Funcția decorator returnează funcția wrapper.
- Fabrica returnează funcția decorator.
Acest lucru este util pentru crearea de decoratori flexibili și configurabili.