dir()未列出的名称tuple的方法



在8.3中。集合 - 容器数据类型 - Python 3.6.4RC1文档,
它指定了5种namedtuple的方法。

namedtuple_methods = {'_fields', '_make', '_replace', '_asdict', '_source'}

尽管如此,该方法无法通过dir方法

获取
from collections import namedtuple
set(dir(namedtuple)) & namedtuple_methods
In [64]: set(dir(namedtuple)) & namedtuple_methods
Out[64]: set()

他们没有交叉点。

有趣的是,特定的namedtuple列出了方法

Book = namedtuple('Book', 'name, author')
In [70]: set(dir(Book)) & namedtuple_methods
Out[70]: {'_asdict', '_fields', '_make', '_replace', '_source'}

背后的明智是什么?

namedtuple是一个出厂功能(从字面上看,源代码中有一个开始def namedtuple(的函数),它不是单独的类(它创建tuple的子类,但不是tuplenamedtuple)。普通def -ED函数将没有任何此类特殊方法。

相关内容

最新更新