Decorating instance methods

Diez B. Roggisch deets at nospam.web.de
Mon Jul 9 09:49:39 CEST 2007


Alexander Draeger schrieb:
> Hello everybody,
> 
> I'm very interesting in using the decorator concept, but I can't
> convert it in useful things. I have read many about decorators and
> have seen a lot of examples, but I search a possibility, to decorate
> methods of classes with reference to the instances. For example:
> 
> I have a class A:
> 
> class A(object):
>    def __init__(self, name):
>        self.name=name
> 
>    @logging
>    def hello(self, name):
>        print 'Hello World.'
> 
> 
> 
>  >>>a=A('Ernie')
>  >>>b=A('Bert')
>  >>>a.hello()
> Entering a method. [Ernie]
> Hello World.
> 
>  >>>b.hello()
> Entering a method. [Bert]
> Hello World.
> 
> 
> How should I implement the function logging, when I want to use the
> variable self.name for the logging message?


def logging(m):
     def _w(self, *args, **kwargs):
         print "name:", self.name
         returm m(self, *args, **kwargs)
     return _w


Diez



More information about the Python-list mailing list