Supposons que j'ai une classe simpleméthodes Décore par exemple en Python
class TestClass:
def doSomething(self):
print 'Did something'
Je voudrais décorer la méthode doSomething
, par exemple pour compter le nombre d'appels
class SimpleDecorator(object):
def __init__(self,func):
self.func=func
self.count=0
def __get__(self,obj,objtype=None):
return MethodType(self,obj,objtype)
def __call__(self,*args,**kwargs):
self.count+=1
return self.func(*args,**kwargs)
Maintenant, ce compte le nombre d'appels à la méthode décorée, mais je voudrais avoir compteur par instance, de sorte que après
foo1.doSomething.count
est 1 et foo2.doSomething.count
est 0. D'après ce que je comprends, ce n'est pas possible en utilisant des décorateurs. Y a-t-il un moyen d'atteindre un tel comportement?
Oui, je suppose que ce serait possible. Mais cela me semble être une conception sous-optimale, car le décorateur s'appuierait sur les propriétés de la classe utilisée pour le rendre plus difficile à utiliser. – Christoph