我当前正在使用一个修饰过的函数,如果在decorator类中某个布尔值设置为True,则应该检查该函数的注释。我有点困惑的是装饰器函数的__call__
方法标头:
def __call__(self, *args, **kargs):
及其参数列表。
我知道其参数*args
和**kargs
用于提供给该函数的参数,但是在我要处理的问题中,我必须调用原始函数(这是一个属性在由名为_f
的装饰器类创建的实例对象中)。
如何使用提供给装饰函数的参数调用_f
?我是否应该检查一下args
/ kargs
是否为空并为非空参数调用self._f(args)
/ self._f(kargs)
?
答案 0 :(得分:0)
装饰方法时:
class Foo:
@someDecorator
def my_method(self, x, y):
...
它实际上还不是一种方法;这只是一个功能。在装饰器内部,您将其视为:
def someDecorator(f):
def _(*args, **kwargs):
...
return f(*args, **kwargs)
return _
调用_
时,self
中将包含*args
。