Decorate methods 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)

이제 이것은 장식 된 메서드에 대한 호출 수를 계산합니다. 인스턴스 별 카운터를 갖고 싶습니다. after

foo1=TestClass()
foo1.doSomething()
foo2=TestClass()

foo1.doSomething.count 은 1이고 foo2.doSomething.count 는 0입니다. 내가 이해하는 바에 따르면 데코레이터를 사용하면 불가능합니다. . 이러한 동작을 수행 할 수있는 방법이 있습니까?

5
задан Christoph 15 June 2011 в 11:16
поделиться