有没有办法在给定函数被包装的情况下获取装饰器的参数?例如,
@job('default')
def update_index():
call_command("update_index", remove=True)
func = update_index
args = ?? # How to use 'func' to get the string 'default' here?
答案 0 :(得分:4)
一般来说,你不能。
job('default')
首先执行 ;返回的内容用作装饰器;实质上,python确实:
def update_index():
call_command("update_index", remove=True)
update_index = job('default')(update_index)
因此,job('default')
可以返回任何。它可以返回一个函数,它只会返回它的参数:
def job(value):
return lambda f: f
这与value
以及返回的“装饰者”无关。是一个无操作,它返回原始函数不变。
对于特定的装饰器,很可能他们留下了我们可以反省的闭包或额外属性。但这实际上取决于特定的装饰器。