Sobes.tech
Middle+

Cos'è una fabbrica di decoratori?

sobes.tech AI

Risposta dell'AI

Una fabbrica di decoratori è una funzione che restituisce un decoratore. Essa accetta argomenti per configurare il comportamento del decoratore restituito. Questo permette di creare decoratori riutilizzabili con comportamenti diversi a seconda dei parametri passati.

# Funzione-fabbrica di decoratori
def my_decorator_factory(prefix):
    # Funzione interna (decoratore), che accetta la funzione da decorare
    def my_decorator(func):
        # Un'altra funzione interna (wrapper), che contiene la logica del decoratore
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Prima di chiamare la funzione {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Dopo aver chiamato la funzione {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Uso della fabbrica per creare decoratori con prefissi diversi
@my_decorator_factory("DEBUG")
def some_function():
    print("Esecuzione di some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Esecuzione di another_function con argomenti {x}, {y}")
    return x + y

some_function()
result = another_function(5, 10)
print(f"Risultato: {result}")

Passaggi principali:

  1. Si definisce una funzione esterna (fabbrica) con parametri.
  2. All’interno della fabbrica, si definisce una funzione decoratore che accetta la funzione da decorare.
  3. All’interno della funzione decoratore, si definisce una funzione wrapper che contiene la logica del decoratore e può usare parametri della fabbrica e argomenti della funzione decorata.
  4. La funzione decoratore restituisce la funzione wrapper.
  5. La fabbrica restituisce la funzione decoratore.

Questo è utile per creare decoratori flessibili e configurabili.