Python 有没有一种方法可以合并来自装饰器和包装函数的签名?
我希望包装一个可调用函数,其中装饰符接受一个附加参数,包装函数的签名作为这两个参数的并集 比如说Python 有没有一种方法可以合并来自装饰器和包装函数的签名?,python,python-decorators,Python,Python Decorators,我希望包装一个可调用函数,其中装饰符接受一个附加参数,包装函数的签名作为这两个参数的并集 比如说 def decorator(func): # something like @functools.wrap def wrapper(other_param: int = None, **kwargs): pass return wrapper @decorator def myfunc(*, foo: int, bar: int): pass
def decorator(func):
# something like @functools.wrap
def wrapper(other_param: int = None, **kwargs):
pass
return wrapper
@decorator
def myfunc(*, foo: int, bar: int):
pass
我想要的是一种在修饰过的myfunc上调用inspect.signature
,并获取所有三个命名参数的方法。我知道sigtools库,但不能将其用作依赖项
编辑:为了澄清,我希望包装的签名是(foo,bar,other_param) 你想让
包装器的**kwargs
变成*,foo,bar
,还是仅仅用包装器的签名来假装需要*,foo,bar
?难道你不能签出sigtools的代码并复制你想要的部分吗?sigtools使用了很多抽象,并且希望有比重新实现库更干净的方法。你包装的函数的签名不是foo、bar、other_param
,所以这样报告是错误的;它实际上是other_param=None,*,foo,bar
。我以前使用过类似的东西,不过只是为了保留签名,而不是扩展它。