[英]How to get arguments to a decorator?
给定包装的函数,是否可以将参数传递给装饰器? 例如,
@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?
一般来说,您不能。
首先执行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
不执行任何操作,并且返回的“ decorator”是no-op,它不变地返回原始函数。
对于特定的装饰器,很可能是它们留下了闭包或我们可以反思的额外属性。 但这确实取决于特定的装饰器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.