对于下面的示例,mypy
返回错误:
错误:分配中的类型不兼容(表达式的类型为“ A”,变量的类型为“ A1”)
from typing import Type
class A:
pass
class A1(A):
pass
class A2(A):
pass
def fun(A_type: Type[A]) -> A:
if A_type == A1:
return A1()
else:
return A2()
a1: A1 = fun(A1)
我理想地要做的是在fun
的签名中强制执行一个依赖项:
def fun(A_type: Type[A]) -> A_type
这可能吗?如果不是,建议采取什么措施(请注意:我希望此方法适用于A
尚未定义的子类,因此我认为我无法使用overload
装饰器)?我最好的选择只是使用cast
吗?
使用带有绑定的TypeVar: