考虑示例:
def decorator(func):
def wrapper(*args, **kwargs):
print(args, kwargs)
func(*args, **kwargs)
return wrapper
@decorator
def foo(x, y, z=0):
pass
foo(5, 5)
输出:
(5, 5) {}
为什么不是 (5, 5) {'z': 0}
?如何仅使用装饰器(用于函数)或元类(用于类)将函数 foo
的所有默认值传递给 *args
或 **kwargs
方法,例如 __init__
)?
最佳答案
包装器只是一个普通函数。它无法“访问”包装函数的内部结构。
您将不得不使用内省(introspection)来获取它们。查看相关问题:
关于Python:将函数参数的默认值传递给 *args 或 **kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210551/