Decorating methods - where do my arguments go?

Mikael Olofsson mikael at isy.liu.se
Tue May 12 02:54:22 EDT 2009


Peter Otten wrote:
> I usually use decorator functions, but I think the following should work, 
> too:
> 
> class deco(object):
>     def __init__(self, func):
>         self._func = func
>     def __call__(self, *args):
>         print "Decorator:", args
>         self._func(*args)
>     def __get__(self, *args):
>         return deco(self._func.__get__(*args))

This looks like a winner to me. It is elegant, works for functions as 
well as for methods, and does not mess with the internals of the 
decorator which avoids the problems that Duncan pointed out.

Thanks Peter, and thanks everyone else that chimed in and contributed.

/MiO



More information about the Python-list mailing list