绑定在通用类内部的通用方法上的TypeVar

时间:2018-06-26 12:01:46

标签: python-3.x generics typing type-variables

由于某些原因,此代码会出现问题:

from typing import *
T = TypeVar("T", bound="Foo")
S = TypeVar("S")

class Foo(Generic[S]):
    @classmethod
    def func(cls: Type[T]) -> T:
        return cls()

Mypy linter将我发送到def func行,说Unsupported type Type["T"]。如果Foo未定义为通用类,则不会发生这种情况。

这是一个错误吗?我在做什么错了?

我将S用于不同的方法,我希望稍后在T的子类中使用Type[T]Foo

1 个答案:

答案 0 :(得分:2)

我相信这是bug in mypy。不幸的是,目前最好的解决方法是在该行中添加一个# type: ignore批注,也许还要添加到相关问题的链接。稍后,您可以通过使用--warn-unused-ignores标志运行mypy来检查该警告是否已解决。