Python 查找 typing.Dict 的值类型

Python find type of value for typing.Dict

如果我有

class A:
    pass

def my_func(my_dict: typing.Dict[str, A]):
    pass

如何找到此字典中值的类型?基本上,我如何确定进入 my_dict 的值应该是 A 类型?

为了提供一些上下文,我有两个数据类

@dataclass
class B:
    x: str

@dataclass
class C:
    y: Dict[str, B]

我正在尝试查看 class C 并找出我需要实例化的对象。在这个例子中,我想创建对象 B.

class_type = C.__annotations__["y"]  # this returns typing.Dict[str, B]
# now need to create the object
b = class_type[1](x="bar")  # index 1 to retrieve the B class in typing.Dict[str, B]
c = C(y = {"foo": b})

我正在尝试创建 b 但显然可变映射中的索引 1 不起作用。

的答案与 __annotations__[<key>] 结合起来,你会得到你需要的

print(typing.get_args(my_func.__annotations__['my_dict']))
# will return (<class 'str'>, <class '__main__.A'>)