这不是一个大问题,但我只是想知道如何解决这个问题。
因为我不熟悉在Python上使用函数注释,所以我不熟悉它。下面我有一个问题
当你制作一个装饰器并想在其上添加注释时,你是如何做到的
例如,下面这样的代码
def decorator(func: Callable[[*args,**kwargs], <what type should be here?>]) -> <??>:
def new_func(*args, **kwargs):
return func(*args, **kwargs)
return new_func
Tags:
使用
Any
作为返回类型,并返回另一个Callable
返回类型Any
。从PEP 484和python standard library,Callable
的第一个参数必须是可调用参数的类型,而不是参数本身。因此,在Callable
中使用*args
和**kwargs
是不可接受的。相反,您必须使用省略号...
(它允许任何数量的位置和关键字参数类型)Decorator函数使用泛型类型(
typing.TypeVar
)更清晰地表示。用外行的话说,泛型是允许类型作为参数的东西从mypy docs(FYI:
mypy
是python
的静态类型检查程序包)中进行解释:因此,您的示例如下:
也从mypy docs和PEP 484转述:
相关问题 更多 >
编程相关推荐