如何用参数装饰 class 方法?
How to decorate a class method with arguments?
我试图了解装饰器如何更好地工作,但当它不起作用时我总是感到困惑。
这是我拥有/想要的:
class myClass(object):
@myDecorate("something")
def test(self, arg1):
print arg1
myInstance = myClass()
myInstance.test("i am arg1")
我会传递一个参数给装饰器,这个参数不会传递给方法本身;而不是用来在幕后做一些 class 方法不需要担心的事情。当我调用 class 方法时,我希望它向它发送 self
和 arg1
。
我似乎不知道该怎么做...
你可以这样做:
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
我试图了解装饰器如何更好地工作,但当它不起作用时我总是感到困惑。
这是我拥有/想要的:
class myClass(object):
@myDecorate("something")
def test(self, arg1):
print arg1
myInstance = myClass()
myInstance.test("i am arg1")
我会传递一个参数给装饰器,这个参数不会传递给方法本身;而不是用来在幕后做一些 class 方法不需要担心的事情。当我调用 class 方法时,我希望它向它发送 self
和 arg1
。
我似乎不知道该怎么做...
你可以这样做:
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