使用mypy进行Typechecking:'结构'有共同的字段

时间:2017-06-15 15:00:28

标签: python typing mypy

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

0 个答案:

没有答案