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

zyx*_*xue 10 python type-hinting mypy

例子:

from typing import TypedDict

class MyType(TypedDict):
    a: int
    b: int

t = MyType(a=1, b=2)

t.update(b=3)
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

Da *_*cky 6

看来这是一个已知的开放问题mypyhttps://github.com/python/mypy/issues/6019

现在,如果您不想mypy让这个错误打扰您,您需要告诉它忽略它:

t.update(b=3)  # type: ignore[call-arg]
Run Code Online (Sandbox Code Playgroud)

  • 或者(类似地同时)提供一个字典或元组而不是关键字,我想。 (4认同)
  • 事实上,`mypy` 不会抱怨 `t.update({"b": 3})` (3认同)