元组已经很好用了,但是作为记录的话还少了一个功能,那就是给记录中的字段命名.namedtuple可以帮助我们解决这个问题
1. collections.namedtuple是一个工厂函数,它可以用来构建一个带字段名的元组和一个有名字的类
2. 用namedtuole构建的类的实例所消耗的内存与元组是一样的.
3. 创建一个具名元组需要两个参数,一个是类名,还一个就是一个个字段的名字,下边的案例就是用空格分隔开的字段名
4. 特别注意的是元组的构造函数只接受单一的可迭代对象,例如下边案例的元组由coordinates这一单一对象接受
5. 你可以利用字段名,甚至是下标位置信息来获取一个字段的信息.
6. 除了普通元组的属性,具名元组还有几个自己专有的属性

# 定义和使用具名元组
from collections import namedtuple

City = namedtuple('City', 'name country population coordinates')
tokyo = City('Tokyo', 'JP', 36.933, (35.689722, 139.691667))
print(tokyo)
print(tokyo.name)
print(tokyo.population)
print(tokyo.coordinates)  # 注意这是个元组
print(tokyo[1])
---
City(name='Tokyo', country='JP', population=36.933, coordinates=(35.689722, 139.691667))
Tokyo
36.933
(35.689722, 139.691667)
JP

City._fields#_fields是一个包含这个类所有字段名称的元组
City._make(US)#.make属性通过接受一个可迭代对象来生成这个类的一个实例.作用与City(*US)是一样的

print(US)

UU = City._make(US)
print(UU._asdict())#_asdict把具名元组里的信息友好的呈现出来
City._fields#_fields是一个包含这个类所有字段名称的元组
City._make(US)#.make属性通过接受一个可迭代对象来生成这个类的一个实例.作用与City(*US)是一样的
print(US)
UU = City._make(US)
print(UU._asdict())#_asdict把具名元组里的信息友好的呈现出来
---
('USA', 'US', 36.933, (35.689722, 139.691667))
{'name': 'USA', 'country': 'US', 'population': 36.933, 'coordinates': (35.689722, 139.691667)}
最后修改:2022 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏