Предположим, у меня есть некоторый простой класс
class TestClass:
def doSomething(self):
print 'Did something'
Я бы хотел украсить метод doSomething
, например, для подсчета количества вызовов
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)
Теперь это подсчитываетколичество вызовов к оформленному методу, однако я хотел бы иметь счетчик для каждого экземпляра, чтобы после
foo1=TestClass()
foo1.doSomething()
foo2=TestClass()
foo1.doSomething.count
было 1, а foo2.doSomething.count
было 0. Из того, что я понимаю, этоневозможно с помощью декораторов.Есть ли способ добиться такого поведения?