Les décorateurs peuvent-ils prendre des paramètres ?
Le code tente d'utiliser un décorateur (@execute_complete_reservation) avec un argument (insurance_mode), mais il échoue . Cela se produit parce que les décorateurs avec des paramètres ont une syntaxe différente.
Syntaxe du décorateur révisée :
Les décorateurs avec des paramètres renvoient des fonctions qui prennent une fonction comme argument, puis en renvoient une autre. fonction. Il renvoie essentiellement un décorateur normal.
def decorator_factory(argument): def decorator(function): def wrapper(*args, **kwargs): # Additional code function(*args, **kwargs) # More additional code return wrapper return decorator
Application du décorateur :
En utilisant cette syntaxe, le code original peut être révisé comme suit :
@execute_complete_reservation_factory(True) def test_booking_gta_object(self): self.test_select_gta_object()
Dans ce code révisé, @execute_complete_reservation_factory est une fonction d'usine qui renvoie un décorateur qui prend la fonction de test réelle comme argument.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!