为了账号安全,请及时绑定邮箱和手机立即绑定

使用具有默认值的 NamedTuples 时如何忽略 mypy 错误

使用具有默认值的 NamedTuples 时如何忽略 mypy 错误

侃侃无极 2021-08-14 16:50:37
我已经能够有mypy做一个类型检查NamedTuple和使用默认值NamedTuple。但是,mypy当我使用默认值时,总是会出现错误。这是我的代码(我使用 Python 3.6)class TestResult(NamedTuple):    """To store results of a given Test Case"""    outcome: str    duration: Optional[int]  # in seconds    comment: Optional[str]    msg: Optional[str]TestResult.__new__.__defaults__ = (None,) * 3  # type: ignore  # Hack for Python < 3.7当我这样做时passed_tc = TestResult("Passed"),我收到以下错误消息错误:“TestResult”的参数太少任何人都知道如何告诉mypy我们可以有可选参数并避免此错误?
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

使用所需的默认值分配需要默认值的值。例如:


from typing import NamedTuple, Optional


class Test(NamedTuple):

    foo: str

    bar: Optional[str] = None

    qux: int = 100


t = Test("foo")

我已经测试过这在运行时适用于 Python 3.6 和 3.7,并使用 mypy 0.641 确认它按预期进行了类型检查。


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信