如何将分配给变量的无类型字典传递给需要 TypedDict 的方法而不引起 mypy 抱怨?

问题描述 投票:0回答:1

我想将字典传递给需要

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]
python python-typing mypy
1个回答
0
投票

将字典文字包装在对

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)
© www.soinside.com 2019 - 2024. All rights reserved.