Écriture de Décorateurs Paramétrés
Glissez pour afficher le menu
Lorsque vous souhaitez que votre décorateur se comporte différemment selon certains paramètres, il est nécessaire de créer un décorateur paramétré. Contrairement aux décorateurs classiques, qui ne prennent que la fonction comme argument, les décorateurs paramétrés acceptent leurs propres arguments, ce qui permet de contrôler dynamiquement leur comportement. Cela est particulièrement utile lorsque vous souhaitez réutiliser un décorateur dans plusieurs situations avec des configurations différentes.
Structure d’un décorateur paramétré :
- La fonction extérieure accepte les arguments du décorateur ;
- La fonction intermédiaire est le décorateur proprement dit qui prend la fonction à décorer ;
- La fonction intérieure encapsule et contrôle l’exécution de la fonction d’origine.
Cette approche en couches permet de transmettre des arguments au décorateur, qui seront alors disponibles lors de l’appel de la fonction décorée.
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. En quoi un décorateur paramétré diffère-t-il d’un décorateur classique ?
2. Pourquoi voudriez-vous passer des arguments à un décorateur ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion