考虑一个包装另一个函数并将输出放入单例列表的函数:
def listify(func):
return lambda *kargs, **kwargs: [func(*kargs, **kwargs)]
你如何在python3中输入提示这个函数?这是我最好的尝试:
from typing import Callable, TypeVar
T = TypeVar('T')
def listify(func: Callable[..., T]) -> Callable[..., List[T]]:
return lambda *kargs, **kwargs: [func(*kargs, **kwargs)]
但我不满意返回的Callable
不会继承输入Callable
的参数类型的签名。有没有办法在不对func
?
答案 0 :(得分:1)
你不能通过类型提示做你想做的事。没有语法来捕获TypeVar
泛型中的参数部分。
Callable
最初保持简单,因为它实际上只是表示回调函数。更改是a-foot,但是only to specify specific arguments,并且没有替换第一个参数的选项(类型检查器只接受列表显示或...
)。有open proposal to introduce an ArgumentsVar
object来呈现特定签名但尚未实现。
你所拥有的是目前可以实现的最佳目标。