Sobes.tech
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:

  1. Definuje se vnější funkce (fabrika) s parametry.
  2. Uvnitř fabriky se definuje dekorátorová funkce, která přijímá funkci k dekoraci.
  3. 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.
  4. Dekorátorová funkce vrací wrapper funkci.
  5. Fabrika vrací dekorátorovou funkci.

To je užitečné pro tvorbu flexibilních a konfigurovatelných dekorátorů.