1

我有几个共享类型字段的简单“结构”。我想定义一个在假设这些字段存在的情况下运行的函数,并且我想用 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 的替代品,请告诉我。

4

0 回答 0