在Python中的类方法上使用包装器

时间:2014-06-08 15:01:00

标签: python class wrapper

我希望能够在类方法上使用包装器:

def wrapper(f):
def inner(*args,**kwargs):
    print 'inner '+f.__name__
    x = f(*args,**kwargs)
    return x
return inner

class A:
    @wrapper
    def f1(x=55):
       return x

print A().f1()

这将返回< main 。实例位于0x05FF7530>

如何返回包装函数A.f1()的结果?

2 个答案:

答案 0 :(得分:2)

你忘记了自我论证:

class A:
    @wrapper
    def f1(self, x=55):
       return x

答案 1 :(得分:0)

如果您确实想按照问题中的说明进行调用,请将其设为classmethod

class A:
    @classmethod
    @wrapper
    def f1(self, x=55):
       return x
>>> A.f1()
inner f1
55
>>>