Sobes.tech
Middle+

Kas yra dekoratorių gamykla?

sobes.tech AI

Atsakymas iš AI

Dekoratorių gamykla – tai funkcija, kuri grąžina dekoratorių. Ji priima argumentus, skirtus grąžinamo dekoratoriaus elgsenos nustatymui. Tai leidžia kurti daugkartinio naudojimo dekoratorius su skirtingu elgesiu, priklausomai nuo perduotų parametrų.

# Dekoratorių gamyklos funkcija
def my_decorator_factory(prefix):
    # Vidinė funkcija (dekoratorius), kuri priima dekoruojamą funkciją
    def my_decorator(func):
        # Dar viena vidinė funkcija (apvyniojimas), kuri atlieka dekoratoriaus veiksmus
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Prieš kviečiant funkciją {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Po funkcijos {func.__name__} kvietimo")
            return result
        return wrapper
    return my_decorator

# Naudojant gamyklą kuriant dekoratorius su skirtingais prefiksais
@my_decorator_factory("DEBUG")
def some_function():
    print(" vykdoma some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f" vykdoma another_function su argumentais {x}, {y}")
    return x + y

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

Pagrindiniai žingsniai:

  1. Apibrėžiama išorinė funkcija (gamyklos funkcija) su parametrais.
  2. Gamyklos viduje apibrėžiama dekoratoriaus funkcija, kuri priima dekoruojamą funkciją.
  3. Dekoratoriaus funkcijos viduje apibrėžiama apvyniojimo funkcija, kuri turi dekoratoriaus logiką ir gali naudoti gamyklos parametrus bei dekoruojamos funkcijos argumentus.
  4. Dekoratoriaus funkcija grąžina apvyniojimo funkciją.
  5. Gamyklos funkcija grąžina dekoratoriaus funkciją.

Tai naudinga kuriant lankstus ir pritaikomus dekoratorius.