Python 3.x Mypy:如何为builder函数指定返回和输入类型?

Python 3.x Mypy:如何为builder函数指定返回和输入类型?,python-3.x,typing,mypy,Python 3.x,Typing,Mypy,我想在Python中使用类型注释生成某种生成器函数 def build_对象(目标类:TargetType)->ReturnType: 返回目标_类() 如何正确指定TargetType和ReturnType? 到目前为止,我有一个选择,但我不知道这是否正确: 从键入导入类型,TypeVar TargetObjType=TypeVar(“TargetObjType”) def生成对象(目标类:类型[TargetObjType])->TargetObjType: 返回目标_类() 如果我将参数

我想在Python中使用类型注释生成某种生成器函数

def build_对象(目标类:TargetType)->ReturnType:
返回目标_类()
如何正确指定
TargetType
ReturnType
? 到目前为止,我有一个选择,但我不知道这是否正确:

从键入导入类型,TypeVar
TargetObjType=TypeVar(“TargetObjType”)
def生成对象(目标类:类型[TargetObjType])->TargetObjType:
返回目标_类()
如果我将参数传递到类构造函数中,则mypy出现错误:

从键入导入类型,TypeVar
TargetObjType=TypeVar(“TargetObjType”)
def生成对象(目标类:类型[TargetObjType])->TargetObjType:
返回目标_类(1)#mypy错误

有没有一种方法可以在不使用
#type:ignore
的情况下修复此问题?

您通常只需调用泛型类型T,以节省键入时间,但这通常看起来没问题-您有理由不这样想吗?MyPy或其他工具的投诉?假设您不处理任何参数,
Callable[[],t]
将是
target\u class
@jornsharpe的另一个选项,谢谢您,仍然在测试这种方法。我对
键入有点困惑。泛型
,但现在似乎很清楚了。谢谢,我将尝试发布更新。@jonrsharpe,添加了一个更新我想问题是:如何知道
target\u类
将接受哪些参数?正如MyPy告诉您的那样,基本
对象
不接受任何内容,因此您需要更具体地说明
构建对象
可以接受的范围。是的,我认为您使用
可调用[…,t]
的选项更合适。
可调用[…,T]
的问题在于,在这个方法之外使用它不是非常优雅的类型,而且它并没有真正指定我需要的是一个
类,而不仅仅是一个返回值为
T
的对象的函数。我们可以说基本上是一样的。但是
Type[T]
无法指定
Type
构造函数可以接受任何参数,对吗?