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:
- Define-se uma função externa (fábrica) com parâmetros.
- Dentro da fábrica, define-se uma função decoradora que aceita a função a decorar.
- 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.
- A função decoradora retorna a função-encapsulamento.
- A fábrica retorna a função decoradora.
Isto é útil para criar decoradores flexíveis e configuráveis.