Alexander Draeger <[EMAIL PROTECTED]> wrote:

> 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?
> 

(Did you intend that other parameter to the hello method? If so you had 
better pass it in when you call the method.)

Try this:

>>> def logging(f):
        def deco(self, *args, **kw):
                print "Entering a method [%s]" % self.name
                return f(self, *args, **kw)
        return deco

>>> class A(object):
    def __init__(self, name):
        self.name=name

    @logging
    def hello(self, name):
        print 'Hello World.'

        
>>> a=A('Ernie')
>>> a.hello('world')
Entering a method [Ernie]
Hello World.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to