python namedtuple

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迁移到自己定义的类

局限

  1. namedtuple无法指定各参数的默认值。对于可选属性比较多的数据来说,namedtuple用起来很不方便。如果这些数据并不是一系列简单的属性,那还是定义自己的类比较好。
  2. namedtuple实例的各项属性,依然可以通过下标及迭代来访问。这可能导致其他人以不符合设计者意图的方式使用这些元组,从而使以后很难把它迁移为真正的类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值