如何使用参数装饰类方法?

时间:2015-09-25 00:08:13

标签: python decorator

我试图理解装饰器如何更好地工作,但是当它不起作用时我一直感到困惑。

继承我所拥有/想要的东西:

class myClass(object):

    @myDecorate("something")
    def test(self, arg1):
        print arg1

myInstance = myClass()
myInstance.test("i am arg1")

我会将一个参数传递给装饰器,它不会被发送到方法本身;而是习惯于在幕后做一些类方法不需要担心的事情。当我调用类方法时,我希望它将selfarg1发送给它。

我似乎无法弄清楚如何做到这一点......

1 个答案:

答案 0 :(得分:2)

您可以这样做:

def myDecorate(something):
    # do work here
    def decorate(f):
        def _wrapper(self, arg1, myOtherArg):
            # do something with myOtherArg
            return f(self, arg1)
        return _wrapper
    return decorate