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'>)
如果我有
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'>)