Bonjour
Je travaille actuellement sur un programme Python utilisant des décorateurs.
L'un de ces décorateurs me permet d'effectuer un "try" sur une méthode, afin d'agir en cas d'erreur (générée par mes soins) :
Ce décorateur est placé avant la méthode d'une classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def dec_erreur(fonction_erreur): def decorateur(fonction_in): def fonction_out(*args, **kwargs): try: # Essai la fonction en entrée result = fonction_in(*args, **kwargs) except AbortError: # Appelle la fonction agissant en cas d'erreur return fonction_erreur() else: # Envoi du résultat de la fonction initiale return result return fonction_out return decorateur
Le faite de créer ce décorateur me permet de réduire le code au maximum. Je n'ai qu'à spécifier la fonction à effectuer en cas d'erreur, ce qui peut me permettre d'effectuer certaines choses en cas de plantage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class MaClasse: @dec_erreur(fonction_erreur) def maMethode(self): ...
Placer une fonction sans argument en paramètre du décorateur n'est pas compliqué. Mais j'aimerais pouvoir appeler une méthode en cas d'erreur, ce qui me permettrait d'accéder à toutes mes variables utiles (connexions à des DB, objets...).
Comment pouvoir envoyer en paramètre du décorateur une référence à la méthode d'une classe?
Merci
Partager