python class decorator question?

Posted by nsharish on Stack Overflow See other posts from Stack Overflow or by nsharish
Published on 2010-05-09T08:30:40Z Indexed on 2010/05/09 8:38 UTC
Read the original article Hit count: 240

Filed under:
|
|
|

decorator 1:

def dec(f):
    def wrap(obj, *args, **kwargs):
        f(obj, *args,**kwargs)
    return wrap

decorator 2:

class dec:
    def __init__(self, f):
        self.f = f
    def __call__(self, obj, *args, **kwargs):
        self.f(obj, *args, **kwargs)

A sample class,

class Test:
    @dec
    def disp(self, *args, **kwargs):
        print(*args,**kwargs)

The follwing code works with decorator 1 but not with decorator 2.

a = Test()
a.disp("Message")

I dont understand why decorator 2 is not working here. Can someone help me with this?

© Stack Overflow or respective owner

Related posts about python

Related posts about class