Sobes.tech
Middle+

Kas ir dekoratoru rūpnīca?

sobes.tech AI

Atbilde no AI

Dekoratoru rūpnīca ir funkcija, kas atgriež dekoratoru. Tā pieņem argumentus, kas konfigurē atgrieztā dekoratora uzvedību. Tas ļauj izveidot atkārtoti lietojamus dekoratorus ar dažādu uzvedību atkarībā no nodotajiem parametriem.

# Dekoratoru rūpnīcas funkcija
def my_decorator_factory(prefix):
    # Iekšēja funkcija (dekorators), kas pieņem dekorējamo funkciju
    def my_decorator(func):
        # Vēl viena iekšēja funkcija (apvalks), kas veic dekoratora darbības
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Pirms funkcijas {func.__name__} izsaukšanas")
            result = func(*args, **kwargs)
            print(f"{prefix}: Pēc funkcijas {func.__name__} izsaukšanas")
            return result
        return wrapper
    return my_decorator

# Izmantojot rūpnīcu, lai izveidotu dekoratorus ar dažādiem prefiksiem
@my_decorator_factory("DEBUG")
def some_function():
    print("Veic some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Veic another_function ar argumentiem {x}, {y}")
    return x + y

some_function()
result = another_function(5, 10)
print(f"Rezultāts: {result}")

Galvenie soļi:

  1. Definē ārējā funkcija (rūpnīca) ar parametriem.
  2. Rūpnīcas iekšienē definē dekoratora funkciju, kas pieņem dekorējamo funkciju.
  3. Dekoratora funkcijas iekšienē definē apvijšanas funkciju, kas satur dekoratora loģiku un var izmantot rūpnīcas parametrus un dekorētās funkcijas argumentus.
  4. Dekoratora funkcija atgriež apvijšanas funkciju.
  5. Rūpnīcas funkcija atgriež dekoratora funkciju.

Tas ir noderīgi, veidojot elastīgus un konfigurējamus dekoratorus.