You need to make the decorator into a descriptor -- either by ensuring its (meta)class has a __get__
method, or, way simpler, by using a decorator function instead of a decorator class (since functions are already descriptors). E.g.:
def dec_check(f): def deco(self): print 'In deco' f(self) return deco class bar(object): @dec_check def foo(self): print 'in bar.foo' b = bar() b.foo()
this prints
In deco in bar.foo
as desired.