Python从未绑定的TypedDict中获取键。

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

我想从一个未绑定的项目中获取钥匙。TypedDict 子类。

正确的方法是什么?

下面我有一个黑客方法,我想知道有没有更标准的方法。


当前方法

我用的是 inspect.getmembers 在...上 TypedDict 子类,并看到了 __annotations__ 属性容纳了键+类型注释的映射。 从那里,我使用 .keys() 以获得所有钥匙的访问权。

from typing_extensions import TypedDict


class SomeTypedDict(TypedDict):

    key1: str
    key2: int


print(SomeTypedDict.__annotations__.keys())

打印。dict_keys(['key1', 'key2'])

但我想知道有没有更好更标准的方法?


版本:我想知道有没有更好更标准的方法?

python==3.6.5
typing-extensions==3.7.4.2
python dictionary typing python-typing
1个回答
1
投票

代码文档中明确指出(指一个派生类的示例)。Point2D):

类型信息可以通过 Point2D.__annotations__ dict,以及 Point2D.__required_keys__Point2D.__optional_keys__ frozensets。

所以,如果模块代码这样说,就没有理由再找其他方法了。

请注意,你的方法只打印了字典键的名称。你可以简单地通过访问完整的字典来获取名称和类型。

print(SomeTypedDict.__annotations__)

就可以得到所有的信息

{'key1': <class 'str'>, 'key2': <class 'int'>}
© www.soinside.com 2019 - 2024. All rights reserved.