在新发布的Python 3.8中,有一个新的类型注释typing.TypedDict
。其文档中提到
可以通过Point2D.__annotations__
和Point2D.__total__
访问用于自省的类型信息。 [....]
尽管__annotations__
是众所周知的,但已在PEP 3107中进行了介绍,但我找不到有关__total__
的任何信息。谁能解释它的含义,并在可能的情况下链接到权威资料来源?
最佳答案
我猜想__total__
字段表示实例是否必须完整(默认值)(所有字段可选)。我从PEP 589开始搜索,该搜索引入了TypedDict
并以此描述整体。它使用了一个total
参数,将class
语法重命名为dunder-style很有意义。但是,我没有发现何时进行这样的重命名。
查看MyPy(这是关心这些批注的实际类型检查器),这里有similar documentation on TypedDict
and totality,但同样没有引用dunder语法。深入研究其实现会导致更多的混乱,因为TypedDictType
in types.py没有总字段,而是将items
和required_keys
分开。总计将暗示items.keys()==required_keys
,但是该实现会做出不同的假设,例如can_be_false
仅依赖items
。 total=False
原则上应表示required_keys
为空。
尽管total
本身描述为“可能很快添加”,但_TypedDictMeta的CPython源代码至少揭示了__total__
参数和TypedDict
dunder是相同的。
关于python - Python 3中__total__ dunder属性的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58427394/