python - Python 3 中的 __total__ dunder 属性是什么意思?
问题描述
在新发布的 Python 3.8 中有一个新的类型注解typing.TypedDict
。它的文档提到
自省的类型信息可以通过
Point2D.__annotations__
和访问Point2D.__total__
。[……]
虽然__annotations__
众所周知,已在PEP 3107中引入,但我找不到任何关于__total__
. 谁能解释它的含义,如果可能的话,链接到权威来源?
解决方案
我猜该__total__
字段表示实例是否必须完整(默认)或不(所有字段可选)。我从PEP 589开始搜索,它介绍TypedDict
并描述了整体性。它使用了一个参数,为 语法total
重命名 dunder-style 是有意义的。class
但是,我没有找到这样的重命名发生的时间。
查看 MyPy,它是关心这些注释的实际类型检查器,在和 totality上有类似的文档TypedDict
,但同样没有引用 dunder 语法。深入研究它的实现会导致更多的混乱,因为TypedDictType
types.py没有一个总字段,而是单独的items
and required_keys
。Totality 会暗示这一点,items.keys()==required_keys
但实现会做出不同的假设,例如单独can_be_false
依赖。原则上应该意味着是空的。items
total=False
required_keys
_TypedDictMeta的 CPython 源代码至少表明total
参数和__total__
dunder 是相同的,尽管源代码将TypedDict
自己描述为“可能很快会添加”。
推荐阅读
- python - 得到 ImportError: cannot import name 'PandasError'
- javascript - 尝试离线导出到 Highcharts
- python-3.x - 如何从 AWS lambda 重建对 Amazon lex 的响应?
- python - 将列表传递给渲染(请求)时CSS失败
- android-fragments - “尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'”
- android - 单行显示 Insight RecyclerView
- c# - Xamarin Forms Android 键盘小数分隔符
- reactjs - ReactJs 中复选框的 onChange 函数
- javascript - 在 onclick 上查找最近的 div 并附加 div
- php - 如何使用 infobip 服务发送电子邮件