【发布时间】:2011-06-15 11:16:33
【问题描述】:
假设我有一些简单的课程
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。据我了解,这是不可能使用装饰器的。有没有办法实现这种行为?
【问题讨论】: