Schreiben von Parametrisierten Dekoratoren
Swipe um das Menü anzuzeigen
Wenn Sie möchten, dass sich Ihr Decorator je nach Eingabe unterschiedlich verhält, müssen Sie einen parametrisierten Decorator erstellen. Im Gegensatz zu regulären Decorators, die nur die Funktion als Argument erhalten, akzeptieren parametrisierte Decorators eigene Argumente, sodass Sie ihr Verhalten dynamisch steuern können. Dies ist besonders nützlich, wenn Sie einen Decorator in verschiedenen Situationen mit unterschiedlichen Konfigurationen wiederverwenden möchten.
Aufbau eines parametrisierten Decorators:
- Die äußere Funktion nimmt die Decorator-Argumente entgegen;
- Die mittlere Funktion ist der eigentliche Decorator, der die zu dekorierende Funktion übernimmt;
- Die innere Funktion umschließt und steuert die Ausführung der Originalfunktion.
Dieser geschichtete Ansatz ermöglicht es, Argumente an den Decorator zu übergeben, die dann verfügbar sind, wenn die dekorierte Funktion aufgerufen wird.
12345678910111213141516171819202122# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
1. Worin unterscheidet sich ein parametrisierter Decorator von einem regulären Decorator?
2. Warum könnte man Argumente an einen Decorator übergeben wollen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen