繁体   English   中英

如何获取装饰的参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM