我们知道元组tuple可以表示不变集合,例如一个点的二维坐标可以表示为P=(1,2),但是只看到P=(1,2)很难知道这个元组是用来表示一个点的二维坐标。但是定义class来表示这个点的意思又有点小题大做。这个时候就可以用到namedtuple()方法
from collections import namedtuple
#定义一个namedtuple类型的me,包含属性name,age
me=namedtuple('me',['name','age'])
#创建一个me对象
user=me('cui',2)
print(user.name)
print(user.age)
user1=me(name='rui',age=4)
print(user1.name)
print(user1.age)
#通过一个list来创建一个me对象,需要使用的是_make方法
user2=me._make(['chang',3])
print(user2.name)
print(user2.age)
#修改对象的属性,需要使用_replace方法
user3=user2._replace(name='sun')
print(user3)
#将me对象转化为字典,需要使用_asdict方法
print(user3._asdict())
运行结果:
cui
2
rui
4
chang
3
me(name='sun', age=3)
OrderedDict([('name', 'sun'), ('age', 3)])