namedtuple(具名元组)类型非常容易定义出精简而又不可变类型数据
collections.namedtuple()函数实际上是一个返回 Python 中标准元组类型子类的一个工厂方法。需要传递一个类型名和你需要的字段给它,然后它就会返回一个类,你可以初始化这个类。
>>> from collections import namedtuple
>>> Student = namedtuple('Student', ('name', 'age', 'sex'))
>>> tom = Student('Tom', '12', 'meal') # 按位置指定其中各项
>>> lisa = Student(name='Lisa', age=12, sex='female') # 采用关键字来指定
>>> tom.name # 通过属性名称访问
'Tom'
>>> tom.sex
'meal'
>>> lisa.name
'Lisa'
>>> lisa.age
12
>>> lisa[0]
'Lisa'
>>> lisa[1]
12
>>> [ i for i in lisa ]
['Lisa', 12, 'female']
>>> len(lisa)
3
由于元组的属性都带有名称,所以当需求发生变化,以致要给简单的数据容器添加新的行为时,很容易就能从namedtuple迁移到自己定义的类
局限
- namedtuple无法指定各参数的默认值。对于可选属性比较多的数据来说,namedtuple用起来很不方便。如果这些数据并不是一系列简单的属性,那还是定义自己的类比较好。
- namedtuple实例的各项属性,依然可以通过下标及迭代来访问。这可能导致其他人以不符合设计者意图的方式使用这些元组,从而使以后很难把它迁移为真正的类。