Sobes.tech
Middle+

Какво е фабрика за декоратори?

sobes.tech AI

Отговор от AI

Декораторната фабрика е функция, която връща декоратор. Тя приема аргументи за настройка на поведението на върнатия декоратор. Това позволява създаването на многократно използваеми декоратори с различно поведение в зависимост от предадените параметри.

# Функция-фабрика за декоратори
def my_decorator_factory(prefix):
    # Вътрешна функция (декоратор), която приема функция за декориране
    def my_decorator(func):
        # Още една вътрешна функция (обвивка), която съдържа логиката на декоратора
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Преди извикването на функция {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: След извикването на функция {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Използване на фабриката за създаване на декоратори с различни префикси
@my_decorator_factory("DEBUG")
def some_function():
    print("Изпълнение на some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Изпълнение на another_function с аргументи {x}, {y}")
    return x + y

some_function()
result = another_function(5, 10)
print(f"Резултат: {result}")

Основни стъпки:

  1. Определя се външна функция (фабрика) с параметри.
  2. Вътре във фабриката се дефинира функция-декоратор, която приема функция за декориране.
  3. Вътре във функцията-декоратор се дефинира функция-обвивка, която съдържа логиката на декоратора и може да използва параметри от фабриката и аргументи на декорираната функция.
  4. Функцията-декоратор връща функция-обвивка.
  5. Фабриката връща функция-декоратор.

Това е полезно за създаване на гъвкави и конфигурируеми декоратори.