我已经能够有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 确认它按预期进行了类型检查。
添加回答
举报
0/150
提交
取消