Sobes.tech
Middle+

Wat is een decoratorfabriek?

sobes.tech AI

Antwoord van AI

Een decoratorfabriek is een functie die een decorator teruggeeft. Het accepteert argumenten om het gedrag van de geretourneerde decorator aan te passen. Dit maakt het mogelijk om herbruikbare decorateurs te maken met verschillend gedrag afhankelijk van de meegegeven parameters.

# Decoratorfabriek functie
def my_decorator_factory(prefix):
    # Interne functie (decorator), die de te decoreren functie accepteert
    def my_decorator(func):
        # Nog een interne functie (wrapper), die de logica van de decorator bevat
        def wrapper(*args, **kwargs):
            print(f"{prefix}: Voor het aanroepen van de functie {func.__name__}")
            result = func(*args, **kwargs)
            print(f"{prefix}: Na het aanroepen van de functie {func.__name__}")
            return result
        return wrapper
    return my_decorator

# Gebruik van de fabriek om decorateurs met verschillende prefixen te maken
@my_decorator_factory("DEBUG")
def some_function():
    print("Uitvoeren van some_function")

@my_decorator_factory("INFO")
def another_function(x, y):
    print(f"Uitvoeren van another_function met argumenten {x}, {y}")
    return x + y

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

Belangrijkste stappen:

  1. Een externe functie (fabriek) wordt gedefinieerd met parameters.
  2. Binnen de fabriek wordt een decoratorfunctie gedefinieerd die de te decoreren functie accepteert.
  3. Binnen de decoratorfunctie wordt een wrapperfunctie gedefinieerd die de logica van de decorator bevat en gebruik kan maken van parameters uit de fabriek en argumenten van de gedecoreerde functie.
  4. De decoratorfunctie retourneert de wrapperfunctie.
  5. De fabriek retourneert de decoratorfunctie.

Dit is handig voor het maken van flexibele en configureerbare decorateurs.