Sobes.tech
Middle+

O que é uma fábrica de decoradores?

sobes.tech IA

Resposta da IA

Uma fábrica de decoradores é uma função que retorna um decorador. Ela aceita argumentos para configurar o comportamento do decorador retornado. Isso permite criar decoradores reutilizáveis com comportamentos diferentes dependendo dos parâmetros passados.

# Função-fábrica de decoradores
def my_decorator_factory(prefix):
    # Função interna (decorador), que aceita a função a decorar
    def my_decorator(func):
        # Outra função interna (envelope), que realiza ações do decorador
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Antes de chamar a função {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Depois de chamar a função {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Uso da fábrica para criar decoradores com diferentes prefixos
@my_decorator_factory("DEBUG")
def some_function():
    print("Executando some_function")

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

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

Passos principais:

  1. Define-se uma função externa (fábrica) com parâmetros.
  2. Dentro da fábrica, define-se uma função decoradora que aceita a função a decorar.
  3. Dentro da função decoradora, define-se uma função-encapsulamento que contém a lógica do decorador e pode usar parâmetros da fábrica e argumentos da função decorada.
  4. A função decoradora retorna a função-encapsulamento.
  5. A fábrica retorna a função decoradora.

Isto é útil para criar decoradores flexíveis e configuráveis.