我想注释一个泛型函数,它将另一个函数及其参数作为参数.
def forward(func, **kwargs):
func(**kwargs)
所以,如果我有一个函数,它接受两个整数:
def sum_int(a: int, b: int):
...
在我的编辑器中,如果我传递了错误的对象类型,我需要帮助:
forward(sum_int, 1.5, 2.6) # want type checker to complain about using floats instead of integers
我怎么才能给forward
加注释呢?类似于:
def forward(func: Callable[rest, ret], **kwargs: rest] -> ret:
...
因此,forward
的第一个参数是func
,而rest
是关键字参数.回报是ret
美元.但是rest
和ret
也是func
的关键字参数和返回类型.
几年前(几十年前!)我用C++做泛型,有捕获和解包各种类型的技巧,但我不知道我们是否必须用Python跳过这些圈子,或者这是否可能.
我真的不知道要搜索什么,也没有找到任何几乎有帮助的东西.
谢谢!