Mypy不支持的类型Type [typeVarAlias]

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

Mypy返回了我不理解的错误(也无法以简化形式重新创建)。验证错误非常困难(给定问号)。

有人知道这个错误是什么意思吗?问号具体表示什么?

Unsupported type Type[typeBasePage?]

相关代码:

typeBasePage = TypeVar("typeBasePage", bound="BasePage")  # any instance subclass of BasePage
typeNavCls = Type[typeBasePage] # error occurs here - trying to make an alias

class Nav:
    def __init__(self, cls: typeNavCls):
        self.cls: typeNavCls = cls

class BasePage(Base):
    ...
    # redacted because it's huge

同样,如果我尝试以非常简化的形式重新创建上述代码,mypy不会出错。

typeB = TypeVar('typeB', bound='B')
tAlias = Type[typeB]

class Nav:
    def __init__(self, cls: tAlias):
        self.cls: tAlias = cls

class A: pass
class B(A): pass
python python-3.x type-hinting mypy
1个回答
0
投票

我相信我发现了问号是什么,但距离弄清楚为什么在mypy中发生错误的位置还差得远。

https://mypy.readthedocs.io/en/latest/literal_types.html

如果未在Final中提供显式类型,则c的类型变得对上下文敏感:mypy基本上会尝试“替换”在执行键入之前使用的原始分配值检查。这就是为什么显示的c类型为Literal[19]?的原因:最后的问号反映了这种上下文相关的性质。

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