提问人:zyxue 提问时间:10/22/2021 更新时间:10/22/2021 访问量:515
为什么 TypedDict 调用 update 方法时 mypy 不通过
Why doesn't mypy pass when TypedDict calls update method
问:
例:
from typing import TypedDict
class MyType(TypedDict):
a: int
b: int
t = MyType(a=1, b=2)
t.update(b=3)
mypy toy.py
抱怨
toy.py:9:1: error: Unexpected keyword argument "b" for "update" of "TypedDict"
Found 1 error in 1 file (checked 1 source file)
答:
6赞
Da Chucky
10/22/2021
#1
这似乎是一个已知的未解决问题: https://github.com/python/mypy/issues/6019mypy
现在,如果你想不打扰这个错误,你需要告诉它忽略它:mypy
t.update(b=3) # type: ignore[call-arg]
评论
4赞
CrazyChucky
10/22/2021
或者(同样地同时)提供字典或元组而不是关键字,我想。
3赞
Da Chucky
10/22/2021
确实,不抱怨mypy
t.update({"b": 3})
评论
t |= dict(b=3)