Sobes.tech
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:

  1. Se definește o funcție externă (fabrica) cu parametri.
  2. În interiorul fabricii, se definește o funcție decorator care acceptă funcția de decorat.
  3. Î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.
  4. Funcția decorator returnează funcția wrapper.
  5. Fabrica returnează funcția decorator.

Acest lucru este util pentru crearea de decoratori flexibili și configurabili.