这不是一个大问题,但我只是想知道解决这个问题的方法。
由于我刚开始在Python上使用函数注释,所以我不熟悉它。我有一个问题如下。
当你制作一个装饰器并想在其上添加注释时,你该怎么做?
例如,如下代码。
def decorator(func: Callable[[*args,**kwargs], <what type should be here?>]) -> <??>:
def new_func(*args, **kwargs):
return func(*args, **kwargs)
return new_func
注意PEP 612(在Python 3.10中实现)引入ParamSpec
,它可以像这样解决你的问题:
from typing import Callable, TypeVar, ParamSpec
T = TypeVar('T')
P = ParamSpec('P')
def decorator(func: Callable[P, T]) -> Callable[P, T]:
def new_func(*args: P.args, **kwargs: P.kwargs) -> T:
return func(*args, **kwargs)
return new_func
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)