我有几个共享类型字段的简单“结构”。我想定义一个函数,该函数在假设存在这些字段的情况下运行,并且我想用mypy来检查它。
有一个关闭的mypy功能请求#3521,其中包含我想要的简明示例:
class Point(NamedTuple):
x: int
y: int
class LabeledPoint(NamedTuple):
x: int
y: int
label: str
def fun(p: Point): ...
fun(LabeledPoint(1, 2, 'test')) # OK
不幸的是,似乎NamedTuples不会在任何时候看到这样的功能(请参阅两个已结束的问题:#3521和#427)
我之前问了一个类似的问题(A way to subclass NamedTuple for purposes of typechecking),我得到了一个很好的回答指向PEP544的方向。虽然PEP544中描述的“协议”是一个不错的主意,但它是为适当的类设计的,而且对于共享几个字段的任务来说太多了。
如果有NamedTuples的替代品,请告诉我。