Middle+
Co je to továrna dekorátorů?
sobes.tech AI
Odpověď od AI
Fabrika dekorátorů je funkce, která vrací dekorátor. Přijímá argumenty pro nastavení chování vráceného dekorátoru. To umožňuje vytvářet znovu použitelné dekorátory s různým chováním v závislosti na předaných parametrech.
# Funkce-fabrika dekorátorů
def my_decorator_factory(prefix):
# Vnitřní funkce (dekorátor), která přijímá funkci k dekoraci
def my_decorator(func):
# Další vnitřní funkce (obal), která obsahuje logiku dekorátoru
def wrapper(*args, **kwargs):
print(f"{prefix}: Před voláním funkce {func.__name__}")
result = func(*args, **kwargs)
print(f"{prefix}: Po volání funkce {func.__name__}")
return result
return wrapper
return my_decorator
# Použití fabriky k vytvoření dekorátorů s různými prefixy
@my_decorator_factory("DEBUG")
def some_function():
print("Provádí se some_function")
@my_decorator_factory("INFO")
def another_function(x, y):
print(f"Provádí se another_function s argumenty {x}, {y}")
return x + y
some_function()
result = another_function(5, 10)
print(f"Výsledek: {result}")
Hlavní kroky:
- Definuje se vnější funkce (fabrika) s parametry.
- Uvnitř fabriky se definuje dekorátorová funkce, která přijímá funkci k dekoraci.
- Uvnitř dekorátorové funkce se definuje wrapper funkce, která obsahuje logiku dekorátoru a může používat parametry z fabriky a argumenty dekorované funkce.
- Dekorátorová funkce vrací wrapper funkci.
- Fabrika vrací dekorátorovou funkci.
To je užitečné pro tvorbu flexibilních a konfigurovatelných dekorátorů.