我正在使用这样的大部分时间构建:
def function(some,params):
pass
function.arg1 = val1
function.arg2 = val2
但是它并不是完全DRY而且如果我在这样的函数或方法中添加了几十个args而且我需要更改函数名称,因此我需要将所有function
更改为{{1 }} 例如。也许有一个内置的python装饰器,我可以这样使用:
function2
当changin函数名称(或用其他名称复制函数)时,它将节省很多时间。任何人都知道python中是否有内置的东西?我知道创建这样的装饰器没什么大不了的,但是我必须将它包含在我的所有项目中,所以内置它会容易得多。
答案 0 :(得分:1)
这应该做的工作
from functools import wraps
def some_decorator(arg1, arg2):
def wrapper(func):
@wraps(func)
def inner_wrapper(*args, **kwargs):
func(*args, **kwargs)
inner_wrapper.arg1 = arg1
inner_wrapper.arg2 = arg2
return inner_wrapper
return wrapper
当然,如果更方便的话,您可以将装饰器中的arg1
和arg2
更改为**kwargs
。