简单而优雅

人活着就是累,简称人类。开个玩笑,活的简单一些也挺好。
人的一些基本属性,简单来说就是 姓名、年龄、性别,就用这三个吧。
如果要对一些人进行描述,可以使用类、使用数组、使用字典。

class Person(object):def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexdef __str__(self):return "name:%s \n" % self.name \+ "age:%s \n" % self.age \+ "sex:%s \n" % self.sexif __name__ == '__main__':# test_field_names_str()person_class = Person("张三", 18, "难")print(person_class) # 获取名字print(person_class.name)

数组

person_list = [["张三", 18, "难"],["李四", 28, "女"]]# 获取名字
name = person_list[0][0]

字典

 person_dict = {"person_01": {"name": "张三","age": 18,"sex": "难",}, "person_02": {"name": "李四","age": 28,"sex": "女",},}# 获取名字name = person_dict["person_01"]["name"]

这三种对person 的处理都可以,但也有优缺点。

  • 类:比较庞大,而且如果只是属性读写,有点大材小用
  • 列表:相较于类小了,但是读写稍有不便,需要通过索引获取值,不利于维护
  • 字典:和列表类似,不便于维护

除了这三种方式,难道就没有其他的简单而优雅的实现吗?
当然是有的,namedtuple !!!从名字看named tuple,有名字的元组。

from collections import namedtupledef test_field_names():field_names_str = "name,age,sex"Person = namedtuple("Person", field_names_str)person_01 = Person("张三", 18, "难")print(person_01.name)field_names_list = ["name", "age", "sex"]Person = namedtuple("Person", field_names_list)person_01 = Person("张三", 18, "难")print(person_01.name)# 像元组一样使用print(person_01[0])# 解包name,age,sex = person_01print(name,age,sex)# namedtuple 转成字典person_dict = person_01._asdict()print(person_dict)# 字典转成 namedtupleperson_02 = Person(**person_dict)print(person_02.name)# 替换,返回一个新的 namedtupleperson_03 = person_02._replace(name="李四")print(person_03.name)if __name__ == '__main__':test_field_names()

到此结 DragonFangQy 2022.4.1

随记-简单而优雅的 namedtuple相关推荐

  1. AMD规范:简单而优雅的动态载入JavaScript代码

    本文翻译自http://www.sitepen.com/blog/2010/11/04/requirejsamd-module-forms/,并加入部分自己的解释. CommonJS 提出了一种用于同 ...

  2. 【原创】基于vue。简单、优雅的评论插件(包含颜文字表情、滑动验证)。

    主要功能 支持颜文字emoji表情(╮( ̄▽ ̄)╭) 支持滑动验证. 评论为空不允许提交. 封装了几个常用的方法. 在线浏览 1.用户已登录 2.用户未登录 使用方法 <template> ...

  3. Android 6.0 动态权限申请简单简洁优雅的处理方式

    Android M 或以上的设备,在使用涉及隐私的安全权限时,需要动态申请,虽然不难,但写下来代码工作量也不少,而且几乎每个应用都需要用到.所以一直在探索一个要足够简单简洁优雅的处理方式,强迫症的精神 ...

  4. 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

    本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...

  5. 计算机需要记笔记,如何优雅地用电脑记笔记

    你是否有过在电脑查资料,想要记下查到的一些凌乱的文字与图片,于是打开word,复制粘贴进去的经历. 你是否感觉每次启动office word很烦,还要为它寻找一个显眼的存储位置. 你是否想记一些并不想 ...

  6. 蟠桃记 --简单递归

    喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!  什么问题?他研究的问题是蟠桃一共有多少个!  不过,到最后,他还是没能解决 ...

  7. 素雅的登录界面,简单而优雅

    先上效果图: 再上代码: <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

  8. 【转】Linux诞生记

    作者:桑文锋,神策数据创始人兼 CEO,前百度大数据部技术经理 原文发表时间:2013-02-16 多年以后,面对数十亿的电脑及手机使用者,Linus Torvalds定会想起在屏幕上打出AAAAAA ...

  9. 如何用 Java 实现简单的区块链

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「锅外的大佬」 1.  概述 本文中,我 ...

最新文章

  1. Nutanix助力五矿证券迈向金融混合云2.0
  2. mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货
  3. 3w最简单led灯电路图_行业内幕揭秘:LED灯没有你想的那么简单!
  4. 在上位计算机控制时不能将s7-200,PLC控制统编程题库.doc
  5. opencv-从设备获取视频并且一帧一帧的保存下来
  6. 头像裁剪上传插件php,PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
  7. POJ-3469 Dual Core CPU 最小割最大流
  8. div设置高度 vue_VsCode常用设置(新手必备!)
  9. matlab2c使用c++实现matlab函数系列教程-poisspdf函数
  10. 计算机网络习题(参考)
  11. css 设置打印a4,CSS设置A4纸大小。
  12. 定性研究的小技巧与注意事项!
  13. 42个机器学习练手项目
  14. 飞飞php影视系统源码怎么改,飞飞cms影视系统安装说明 飞飞影视系统建站流程...
  15. precision、recall、f1score的计算
  16. AppleWebKit/537.36(KHTML,likeGecko)与cdn讲解
  17. ubuntu下解决zip解压缩后乱码
  18. 我爱南开站 -- EmpriseNovel精华区
  19. jenkin+docker 构建项目
  20. 第五十七篇:VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类

热门文章

  1. 嵌入式linux 网络唤醒,GotoHTTP
  2. 图论 —— 图的遍历 —— 哈密顿问题
  3. python末尾加空格_Python3基础 print(,end=) 输出内容的末尾加入空格
  4. 搭建APP如何选择服务器
  5. Apc缓存Opcode
  6. linux系统安装在u盘
  7. exit()函数介绍
  8. 南京信息工程大学第十届程序设计大赛试题
  9. 为什么要上机械制造业ERP系统?对企业有什么帮助?
  10. 信息系统项目管理师---第九章 项目人力资源管理历年考题