Outils pour utilisateurs

Outils du site


decorateurs_modeles

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Dernière révision Les deux révisions suivantes
decorateurs_modeles [2012/03/26 17:55]
tyrtamos
decorateurs_modeles [2012/03/26 18:04]
tyrtamos
Ligne 307: Ligne 307:
 ==== Décorateurs avec arguments ==== ==== Décorateurs avec arguments ====
  
-Même chose que le décorateur précédent,​ à part qu'on peut passer des arguments au décorateur pour déterminer son comportement devant chaque fonction décorée:+Même chose que le décorateur précédent,​ à part qu'on peut passer des arguments au décorateur pour déterminer son comportement devant chaque fonction décorée
 + 
 +Par rapport aux code habituellement présenté comme modèle, j'​ajoute une variable de classe adr qui est un dictionnaire qui va stocker les adresses des instances. Sans cette solution (je n'en ai pas trouvé d'​autres),​ on ne peut pas comme précédemment accéder à une méthode supplémentaire du décorateur comme '​resultat'​.
  
 <code python> <code python>
 class decorateur(object):​ class decorateur(object):​
     """​ decorateur avec passage d'​arguments """​     """​ decorateur avec passage d'​arguments """​
 +    ​
 +    adr = {}
 +    ​
     def __init__(self,​ *decargs, **deckwargs):​     def __init__(self,​ *decargs, **deckwargs):​
         self.decargs = decargs # arguments par position passés au décorateur         self.decargs = decargs # arguments par position passés au décorateur
         self.deckwargs = deckwargs # arguments par défaut passés au décorateur         self.deckwargs = deckwargs # arguments par défaut passés au décorateur
 +    ​
     def __call__(self,​ fonc): ​     def __call__(self,​ fonc): ​
         @functools.wraps(fonc)         @functools.wraps(fonc)
Ligne 323: Ligne 329:
             # instructions après             # instructions après
             return result             return result
 +        self.__class__.adr[fonc.__name__] = self
         return appelfonc         return appelfonc
 +
 +    def resultat(self):​
 +        pass
 </​code>​ </​code>​
  
decorateurs_modeles.txt · Dernière modification: 2012/03/26 18:08 par tyrtamos