为什么 TypedDict 调用 update 方法时 mypy 不通过

Why doesn't mypy pass when TypedDict calls update method

提问人:zyxue 提问时间:10/22/2021 更新时间:10/22/2021 访问量:515

问:

例:

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)
python 类型提示 mypy

评论

0赞 rv.kvetch 10/22/2021
嗯。。。我以前没有碰过mypy,但是它是如何工作的?t |= dict(b=3)

答:

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
确实,不抱怨mypyt.update({"b": 3})