我想实现这样的通用类:
S = TypeVar("S")
T = TypeVar("T", bound=OtherParametrizedClass)
class MyClass(Generic[T[S]]):
def some_method(param: S) -> None:
pass
我已经尝试了以下内容:
S = TypeVar("S")
T = TypeVar("T", bound=OtherParametrizedClass)
class MyClass(Generic[S, T[S]]):
def some_method(param: S) -> None:
pass
def other_method(param: T) -> None:
pass
它与MyPy一样正常工作。但是,当Python解释器运行此代码时,它会给我以下错误:
TypeError: 'TypeVar' object is not subscriptable.
正如我发现的那样,这意味着TypeVar
没有实施[]
运算符。
有没有人知道如何获得满足mypy和Python解释器的解决方案?
编辑: 我也尝试过以下方法:
S = TypeVar("S")
T = TypeVar("T", bound=OtherParametrizedClass[S])
class MyClass(Generic[T]):
def some_method(param: S) -> None:
pass
def other_method(param: T) -> None:
pass
Python解释器不会提供任何错误/警告。然而,mypy抱怨第二行:
Invalid type "S"