我有几个共享类型字段的简单“结构”。我想定义一个在假设这些字段存在的情况下运行的函数,并且我想用 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 typechecking),我得到了一个很好的回应,指向PEP544的方向。虽然 PEP544 中描述的“协议”是一个好主意,但它是为适当的类设计的,对于共享几个字段的任务来说有点太多了。
如果有 NamedTuples 的替代品,请告诉我。