普通的tuple只能通过下标来访问,可读性较差,而通过namedtuple,我们可以实现给tuple以及tuple内的元素起名,让tuple可读性更强。
namedtuple对象定义的格式:
collections.namedtuple(typename, field_names, verbose=False, rename=False)
其中:
typename:元组名称
field_names:元组中元素的名称
rename: 如果元素名称中含有 python 的关键字,则必须设置为 rename=True
import collections
point = collections.namedtuple('point', 'x, y')
point = collections.namedtuple('point', 'x y')
point = collections.namedtuple('point', ['x', 'y'])
collections.namedtuple需要两个参数,第一个数元组的名称,第二个是元组中元素的名称,元素的名称可以用(1)一个字符串,里面用空格分隔字段名;(2)一个字符串,用逗号分隔字段名;(3)由多个字符串组成的可迭代对象。
实例化以及获取元素p = point(1, 2) print(p.x) print(p.y) print(p[0]) print(p[1])
输出:
1 2 1 2属性
也可以通过一个list来创建一个User对象,这里注意需要使用"_make"方法
p1 = point._make([1, 2]) print(p1) # point(x=1, y=2)
# 获取所有字段名
print(p1._fields)
# ('x', 'y')
修改属性值,使用_replace:
p1 = p1._replace(x=5) print(p1) # point(x=5, y=2)
将对象转换成字典:OrderedDict
# 将对象转换成字典
print(p1._asdict())
# OrderedDict([('x', 5), ('y', 2)])



