我似乎无法让泛型类型工作。我是Deque的子类。Deque的每一项都是SomeNamedTuple的一个实例。你知道吗
from typing import NamedTuple, Deque, TypeVar
class SomeNamedTuple(NamedTuple):
field1: int
field2: str
T = TypeVar("T", bound=NamedTuple)
class SomeDeque(Deque[T]):
def some_method(self) -> None:
if self:
print(self[0]._fields)
mydeque = SomeDeque[SomeNamedTuple]()
$ mypy --strict foo.py
foo.py:14: error: Value of type variable "T" of "SomeDeque" cannot be "SomeNamedTuple"
我在mypy中进行了一些调试/应用类型.py产生错误的地方:
upper_bound = callable.variables[i].upper_bound
if not mypy.subtypes.is_subtype(type, upper_bound):
if skip_unsatisfied:
types[i] = None
else:
print(f'type = {type}')
print(f'upper_bound = {upper_bound}')
msg.incompatible_typevar_value(callable, type, callable.variables[i].name, context)
它似乎认为类型是一个元组(不是名为Tuple):
$ mypy --strict foo.py
type = Tuple[builtins.int, builtins.str, fallback=foo.SomeNamedTuple]
upper_bound = typing.NamedTuple
foo.py:14: error: Value of type variable "T" of "SomeDeque" cannot be "SomeNamedTuple"
我做错什么了?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐