官方文档:https://docs.python.org/zh-cn/3/library/collections.html#collections.namedtuple
命名元组就是可以为元组中每一个位置的值加上属性名的元组,提供可读性和自文档性。
例子:
>>> from collections import namedtuple
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(1, 2)
>>> p
Point(x=1, y=2)
>>> p.x
1
>>> p.y
2
上例中我们创建的一个表示坐标点的命名元组 p
,并通过属性名 x
和 y
来获得其坐标参数。
与此同时,元组传统上通过位置索引获取参数的方法依然可用:
>>> p[0]
1
>>> p[1]
2
除了继承元组的方法,命名元组还支持三个额外的方法和两个属性。为了防止字段名冲突,方法和属性以下划线开始。
-
_make(iterable)
从存在的序列或迭代实例创建一个新实例
>>> t = [11, 22]
>>> Point._make(t)
Point(x=11, y=22)
-
_asdict()
返回一个新的dict
,它将字段名称映射到它们对应的值
>>> p = Point(x=11, y=22)
>>> p._asdict()
{'x': 11, 'y': 22}
-
_replace(**kwargs)
返回一个新的命名元组实例,并将指定域替换为新的值
>>> p = Point(x=11, y=22)
>>> p._replace(x=33)
Point(x=33, y=22)
-
_fields
返回元组所有字段名
>>> p._fields # view the field names
('x', 'y')