Sobes.tech
Middle+

¿Qué es una fábrica de decoradores?

sobes.tech AI

Respuesta de la IA

Una fábrica de decoradores es una función que devuelve un decorador. Toma argumentos para configurar el comportamiento del decorador devuelto. Esto permite crear decoradores reutilizables con diferentes comportamientos según los parámetros pasados.

# Función-fábrica de decoradores
def my_decorator_factory(prefix):
    # Función interna (decorador), que acepta la función a decorar
    def my_decorator(func):
        # Otra función interna (envoltorio), que realiza acciones del decorador
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Antes de llamar a la función {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Después de llamar a la función {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Uso de la fábrica para crear decoradores con diferentes prefijos
@my_decorator_factory("DEBUG")
def some_function():
    print("Ejecutando some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Ejecutando another_function con argumentos {x}, {y}")
    return x + y

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

Pasos principales:

  1. Se define una función externa (fábrica) con parámetros.
  2. Dentro de la fábrica, se define una función decoradora que acepta la función a decorar.
  3. Dentro de la función decoradora, se define una función envoltorio que contiene la lógica del decorador y puede usar parámetros de la fábrica y argumentos de la función decorada.
  4. La función decoradora devuelve la función envoltorio.
  5. La fábrica devuelve la función decoradora.

Esto es útil para crear decoradores flexibles y configurables.