我想实现一个这样的泛型类:
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"