我有一个
list
结构作为 API 的扁平输入
(point_x, point_y, thing_a, thing_b, thing_c)
这个真实的结构是一个由许多扁平对象组成的很长的列表。这个例子是一个非常简化的案例。
我想在 python 中明确创建它的类型
from typing import Tuple
point = (int, int)
thing = (int, float, str)
TypeA = Tuple[point + thing]
这是一个有效的 python 类型:
typing.Tuple[int, int, int, float, str]
但是,MyPy 不喜欢它。
"Invalid type alias: expression is not a valid typeMypyvalid-type"
我拥有的真实结构非常复杂,这对开发人员了解如何创建结构很有帮助。
如何在 MyPy 不导致错误的情况下正确执行此操作
作为附录,以下内容不是有效的解决方案
from typing import Tuple
Tuple[
int, # point_x
int, # point_y
int, # thing_a
float, # thing_b
str # thing_c
]
您需要使用
tuple[...]
,而不是 (...)
来定义“类型级元组”。
point = tuple[int, int]
thing = tuple[int, float, str]
您可以解压它们来定义
TypeA
:
TypeA = tuple[*point, *thing]
然后可以用作类型提示:
x: TypeA = (1, 2, 3, 4.5, "foo") # OK
y: TypeA = ("bar", 2, 3, 4.5, "foo") # Error