简单而优雅

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

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. Nginx的server为0.0.0.0/0.0.0.1的作用?
  2. 字符串处理 —— 概述
  3. 视觉SLAM笔记(49) 后端状态估计
  4. Golang并发模式基础
  5. java三色球问题_2020100期专业玩彩双色球走势分析
  6. 【python】sys模块操作使用
  7. 利用npm bin创建可执行命令实现项目代码规范自动化
  8. python求周长_计算任何三角形的周长[python 3]
  9. LVS负载均衡群集——NAT地址转换
  10. openwrt修改lan口地址失败_OpenWrt刷机后LAN口无法连通的问题
  11. 长方形与圆最近连线LISP_“认识长方形,正方形和圆”教学实录与评析
  12. 利用python分析电商_Python电商数据分析实战
  13. bzoj3659 Which Dreamed It BEST定理(公式绝对没错doge)
  14. 基于激光视觉传感器的工业机器人焊缝跟踪系统的优缺点
  15. 第四章 DDR3和FLASH 基于ARTY A7的MicroBlaze系统搭建与应用
  16. mysql 5.7.21 winx64_mysql5.7.21 winx64安装配置图文分享
  17. 计算机管理没有本地用户和组控制面板,win10管理没有本地用户和组怎么办_win10电脑管理没有本地用户和组解决方法...
  18. 如何掌控自己的时间和生活
  19. ultraedit删除重复项_UltraEdit技巧总结
  20. sourcegraph/conc: Better structured concurrency for go

热门文章

  1. 【数据异常校验】卡方检验(chi-squared test)处理异常数据
  2. 动手学深度学习——softmax回归之OneHot、softmax与交叉熵
  3. 树的基本概念和2叉树中重要的几个性质
  4. 树以及二叉树的常用性质以及遍历
  5. MetaQ 简单使用(数据同步框架)
  6. php怎么设置表格大小,如何设置excel表中的单元格大小统一
  7. Python利用Face++实现身份证件图片识别
  8. linux 查看开放的端口以及开放端口并且永久开放端口的方法
  9. zTree的使用教程
  10. 排序(下):归并排序和快速排序