How to add a Decorator to a Class Method

Arnaud Delobelle arnodel at googlemail.com
Tue Nov 20 01:57:24 EST 2007


On Nov 20, 4:59 am, "gregpin... at gmail.com" <gregpin... at gmail.com>
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
>     def func(self,a,b):
>         print a+b

'self' is not bound during class creation so self.pre does not exist.
Your decorator should be a regular function:

def pre(fn):
    ...

class A:
    @pre
    def func(self, x, y):
        ....

HTH

--
Arnaud




More information about the Python-list mailing list