On Mon, 19 Nov 2007 20:59:51 -0800, [EMAIL PROTECTED] wrote: > How do I add a decorator to a class method? Here's what I want to do, > but I guess my syntax isn't right. Any advice? > > class A: > def pre(self,fn): > def new_func(*args,**kwargs): > print 'hi' > fn(*args,**kwargs) > return new_func > @self.pre
At this point there is no `self` which is exactly what the exception says if you run this. This method definition executed at class definition time so there is no instance of `A`. You can't change it to [EMAIL PROTECTED] either because the class is not fully constructed yet so the class name `A` does not exist yet. So you have to move `pre()` out of the class. def pre(fn): def new_func(*args, **kwargs): print "'hi'" fn(*args, **kwargs) return new_func class A(object): @pre def func(self, a, b): print a + b a = A() a.func(3, 5) Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list