Sobes.tech
Middle+

Czym jest fabryka dekoratorów?

sobes.tech AI

Odpowiedź od AI

Fabryka dekoratorów to funkcja, która zwraca dekorator. Przyjmuje argumenty do konfiguracji zachowania zwracanego dekoratora. Pozwala to na tworzenie wielokrotnego użytku dekoratorów z różnym zachowaniem w zależności od przekazanych parametrów.

# Funkcja-fabryka dekoratorów
def my_decorator_factory(prefix):
    # Funkcja wewnętrzna (dekorator), która przyjmuje funkcję do dekoracji
    def my_decorator(func):
        # Kolejna funkcja wewnętrzna (opakowanie), która zawiera logikę dekoratora
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Przed wywołaniem funkcji {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Po wywołaniu funkcji {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Użycie fabryki do tworzenia dekoratorów z różnymi prefiksami
@my_decorator_factory("DEBUG")
def some_function():
    print("Wykonanie some_function")

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

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

Główne kroki:

  1. Definiuje się funkcję zewnętrzną (fabrykę) z parametrami.
  2. Wewnątrz fabryki definiuje się funkcję dekoratora, która przyjmuje funkcję do dekoracji.
  3. Wewnątrz funkcji dekoratora definiuje się funkcję opakowującą, zawierającą logikę dekoratora i mogącą korzystać z parametrów fabryki oraz argumentów funkcji dekorowanej.
  4. Funkcja dekoratora zwraca funkcję opakowującą.
  5. Fabryka zwraca funkcję dekoratora.

To jest przydatne do tworzenia elastycznych i konfigurowalnych dekoratorów.