namedtuple 赋予默认值

本文介绍了Python中namedtuple的使用方法,包括如何创建namedtuple类、如何通过属性名访问数据及设置默认值等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先讲讲什么是namedtuple。
namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。

在python中,传统的tuple类似于数组,只能通过下标来访问各个元素,我们还需要注释每个下标代表什么数据。通过使用namedtuple,每个元素有了自己的名字,类似于C语言中的struct,这样数据的意义就可以一目了然了。

from collections import namedtuple
User = namedtuple('User', ('name', 'age', 'sex'))

上面的代码就创建了一个User类,并且拥有3个属性name,age和sex。默认创建User类对象的时候,所有属性都需要赋值。

下面的写法会抛出异常:

# TypeError: __new__() 
# missing 3 required positional arguments: 'name', 'age', and 'sex'
a = User()
print(a)

正确的写法:

a = User(name='zhe', age=21, sex='male')
print(a)

但是我们可以为每个namedtuple对象赋予默认值:

User.__new__.__defaults__ = ('zhe', 21, 'male')

这个就可以执行:

a = User()

# User(name='zhe', age=21, sex='1')
print(a)

更高级的用法,假设下面的Field类,我们需求name为必填,而required和location有默认值,则可以有如下写法:

Field = namedtuple('Field', [
    'name', 'required', 'location'
])
Field.__new__.__defaults__ = (False, '')

f = Field(name='zhexiao')
print(f)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值