我想将字典传递给需要
foo
的方法 TypedDict
而无需明确提及类型。当我将字典直接传递给方法时,一切都很好。然而,当我首先将字典分配给变量 configs
时,mypy 会抱怨类型不兼容。有趣的是,只要 foo(configs)
包含正确的键和值,PyCharm 就不会抱怨 configs
。我可以在下面的 [1] 处向 configs
添加类型信息,但想知道是否可以改进打字,以使 foo
和 Params
的使用不那么冗长。
from typing import TypedDict
class Params(TypedDict):
a: str
b: str
def foo(config: Params):
pass
foo({"a": "a", "b": "b"}) # Okay
configs = {"a": "a", "b": "b"} # [1]
foo(configs) # error: Argument 1 to "foo" has incompatible type "dict[str, str]"; expected "Params" [arg-type]
将字典文字包装在对
Params
: 的调用中
from typing import TypedDict
class Params(TypedDict):
a: str
b: str
def foo(config: Params):
pass
foo({"a": "a", "b": "b"}) # Okay
configs = Params({"a": "a", "b": "b"}) # [1]
foo(configs)