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:
- Definiuje się funkcję zewnętrzną (fabrykę) z parametrami.
- Wewnątrz fabryki definiuje się funkcję dekoratora, która przyjmuje funkcję do dekoracji.
- 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.
- Funkcja dekoratora zwraca funkcję opakowującą.
- Fabryka zwraca funkcję dekoratora.
To jest przydatne do tworzenia elastycznych i konfigurowalnych dekoratorów.