我想从一个未绑定的项目中获取钥匙。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
代码文档中明确指出(指一个派生类的示例)。Point2D
):
类型信息可以通过
Point2D.__annotations__
dict,以及Point2D.__required_keys__
和Point2D.__optional_keys__
frozensets。
所以,如果模块代码这样说,就没有理由再找其他方法了。
请注意,你的方法只打印了字典键的名称。你可以简单地通过访问完整的字典来获取名称和类型。
print(SomeTypedDict.__annotations__)
就可以得到所有的信息
{'key1': <class 'str'>, 'key2': <class 'int'>}