在Python中为每个实例装饰方法
|
假设我有一些简单的课程
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。据我了解,使用装饰器是不可能的。有什么方法可以实现这种行为?
没有找到相关结果
已邀请:
2 个回复
断跑胺弄萎
在上面的代码中,我们将对象作为方法的修饰版本的
参数拦截。装饰器的用法非常简单:
届甸衬丝蚕