命名元组
1、命名元组也叫具名元组
可以通过名称来访问序列中的元素,摆脱对位置的依赖,他本身是一个工厂函数
2、应用1
实例化元组返回的类,其内存占用要比普通类实例要小的多,因为前者实例的属性不通过字典进行管理
1 from collections import namedtuple 2 3 # 返回可实例化的类 4 P = namedtuple("人", ["姓", "教育背景"]) 5 6 7 class Person: 8 # 类实例化,字段赋值,可以理解为普通类实例后返回调用__init__方法 9 p_one = P("陈", "本科") 10 p_two = P("谷", "研究生") 11 12 13 if __name__ == '__main__': 14 # 访问字段值 15 print(Person.p_one.教育背景) 16 # 属性转为字典输出 17 print(Person.p_two._asdict())
output:
本科
{'姓': '谷', '教育背景': '研究生'}
应用2
和数据类有点相似,只不过属性的存储方式不一样,数据类和普通的类实例无异,只不过省去了__init__方法的书写
1 from typing import NamedTuple 2 3 4 class Valley(NamedTuple): 5 name: str 6 age: int 7 8 9 if __name__ == '__main__': 10 v = Valley('g', 26) 11 print(v.name)
output:
g