namedtuple是继承自tuple的子类。namedtuple创建一个和tuple类似的对象,而且对象拥有可访问的属性
可利用collections.namedtuple构建一个简单的类。
from collections import namedtuple
# 定义一个namedtuple类型User,并包含name,sex和age属性。
User = namedtuple('User', ['name', 'sex', 'age'])
# 创建一个User对象
user = User(name='kongxx', sex='male', age=21)
# 也可以通过一个list来创建一个User对象,这里注意需要使用"_make"方法
user = User._make(['kongxx', 'male', 21])
print(user)
# User(name='user', sex='male', age=21)
# 获取用户的属性
print(user.name)
print(user.sex)
print(user.age)
# 修改对象属性,注意要使用"_replace"方法
user = user._replace(age=22)
print(user)
# User(name='user', sex='male', age=22)
# 将User对象转换成字典,注意要使用"_asdict"
print(user._asdict())
# OrderedDict([('name', 'kongxx'), ('sex', 'male'), ('age', 22)])
namedtuple类位于Collections模块中,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护,下面就来简单讲解Python编程中namedtuple类的用法
Python的Collections模块提供了不少好用的数据容器类型,其中一个精品当属namedtuple。
namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。
在python中,传统的tuple类似于数组,只能通过下标来访问各个元素,我们还需要注释每个下标代表什么数据。通过使用namedtuple,每个元素有了自己的名字,类似于C语言中的struct,这样数据的意义就可以一目了然了。当然,声明namedtuple是非常简单方便的。
代码示例如下:
类似于tuple,它的属性也是不可变的:
能够方便的转换成OrderedDict:
方法返回多个值得时候,其实更好的是返回namedtuple的结果,这样程序的逻辑会更加的清晰和好维护:
相比tuple,dictionary,namedtuple略微有点综合体的意味:直观、使用方便,墙裂建议大家在合适的时候多用用namedtuple。