namedtuple简单实用
namedtuple的好处是简单易用,并且在使用变量时,可以通过 对象.属性 的格式,获取值,这和普通实例化出来的类的实例如出一辙,可以相当清楚的看出到底是用了哪个属性。
譬如一个类:
class Person():
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name='{self.name}', age={self.age})"
p = Person('wang',23)
print(p.name,p.age)
print(p)
print(p.__class__)
对比 namedtuple:
from collections import namedtuple as nt
people = nt("Person",["name","age"])
p = people("wang",23)
print(p.name,p.age)
print(p)
print(p.__class__)
从两段代码的执行结果来看,两者是相同的。但是 namedtuple 使用了更少的代码,并且它还支持其他操作:
p = people("wang",23)
p = people(name='zhang',age=22)
p = people(*['wang',25])
p = people(**{"name":'A', 'age':33})
# 替换旧值
p = p._replace(age='aaa')
print(p)
# 转换为字典
d = p._asdict()
print(d)
# 索引取值
print(p[0], p[1])
a, b = p
print(a, b)
namedtuple 的好处,体现在索引取值中。当一个元组很长,用索引取值,在后续的代码中,很难看出某个索引代表什么意思。 譬如:
from collections import namedtuple as nt
people = nt("Person",["name","age","weight","hight"])
zhang = people('zhang',23,80,170)
# 不清楚索引代表的值
if zhang[2] < 90:
print('体重小于90')
# 取值很明确
if zhang.weight < 90:
print("small than 90")
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构