Sobes.tech
Middle+

Čo je továreň na dekoratéri?

sobes.tech AI

Odpoveď od AI

Fabrika dekoratorjev je funkcija, ki vrne dekorator. Sprejema argumente za nastavitev vedenja vrnjenega dekoratorja. To omogoča ustvarjanje večkrat uporabnih dekoratorjev z različnim vedenjem glede na podane parametre.

# Funkcija-fabrika dekoratorjev
def my_decorator_factory(prefix):
    # Notranja funkcija (dekorator), ki sprejema funkcijo za dekoriranje
    def my_decorator(func):
        # Še ena notranja funkcija (ovijalec), ki vsebuje logiko dekoratorja
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Pred klicem funkcije {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Po klicu funkcije {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Uporaba fabrike za ustvarjanje dekoratorjev z različnimi predponami
@my_decorator_factory("DEBUG")
def some_function():
    print("Izvajanje some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Izvajanje another_function z argumenti {x}, {y}")
    return x + y

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

Glavni koraki:

  1. Definira se zunanja funkcija (fabrika) z argumenti.
  2. Znotraj fabrike se definira funkcija-dekorator, ki sprejema funkcijo za dekoracijo.
  3. Znotraj funkcije-dekorator se definira funkcija-ovijalec, ki vsebuje logiko dekoratorja in lahko uporablja parametre iz fabrike ter argumente dekorirane funkcije.
  4. Funkcija-dekorator vrne funkcijo-ovijalec.
  5. Fabrika vrne funkcijo-dekorator.

To je uporabno za ustvarjanje prilagodljivih in konfigurabilnih dekoratorjev.