Да, я думаю, это было бы возможно. Но для меня это кажется неоптимальным дизайном, поскольку декоратор будет полагаться на свойства класса, который он использует, чтобы сделать его сложнее в использовании.

оложим, у меня есть простой класс

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. Насколько я понимаю, это невозможно при использовании декораторов. Есть ли способ добиться такого поведения?