Python中带有mypy的依赖类型和多态性

问题描述 投票:0回答:1

对于下面的示例,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吗?

python typing dependent-type mypy
1个回答
0
投票

使用带有绑定的TypeVar:

© www.soinside.com 2019 - 2024. All rights reserved.