Können Dekoratoren Parameter annehmen?
Der Code versucht, einen Dekorator (@execute_complete_reservation) mit einem Argument (insurance_mode) zu verwenden, aber es schlägt fehl . Dies liegt daran, dass Dekoratoren mit Parametern eine andere Syntax haben.
Überarbeitete Dekorator-Syntax:
Dekoratoren mit Parametern geben Funktionen zurück, die eine Funktion als Argument verwenden und dann eine andere zurückgeben Funktion. Es gibt im Wesentlichen einen normalen Dekorator zurück.
def decorator_factory(argument): def decorator(function): def wrapper(*args, **kwargs): # Additional code function(*args, **kwargs) # More additional code return wrapper return decorator
Anwenden des Dekorators:
Mit dieser Syntax kann der Originalcode wie folgt überarbeitet werden:
@execute_complete_reservation_factory(True) def test_booking_gta_object(self): self.test_select_gta_object()
In diesem überarbeiteten Code ist @execute_complete_reservation_factory eine Factory-Funktion, die einen Dekorator zurückgibt, der die eigentliche Testfunktion annimmt ein Argument.
Das obige ist der detaillierte Inhalt vonKönnen Python-Dekoratoren Parameter akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!