Decorar métodos por instancia en Python
Supongo que tengo una clase simple
class TestClass:
def doSomething(self):
print 'Did something'
Me gustaría decorar eldoSomething
método, por ejemplo, para contar el número de llamadas
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)
Ahora esto cuenta el número de llamadas al método decorado, sin embargo, me gustaría tener un contador por instancia, de modo que después de
foo1=TestClass()
foo1.doSomething()
foo2=TestClass()
foo1.doSomething.count
es 1 yfoo2.doSomething.count
es 0. Por lo que entiendo, esto no es posible usando decoradores. ¿Hay alguna forma de lograr tal comportamiento?