effective python学习笔记_类与接口

devtools/2024/10/18 19:24:50/

用组合类实现多层结构而不用内置类型

例子:成绩单,存储学生各科成绩多个然后加权重,如果用字典类型会导致字典有多层嵌套结构

思想 当用内置类型如字典元组等结构出现超过二层的多层嵌套结构时,读起来会比较难懂,此时建议通过定义一批新类实现一套新体系,这样可以定义良好清晰的接口,并合理封装数据

怎么做 多个属性时,将每个属性定义为实例属性,可以考虑namedtuple(namedtuple无法对属性设定默认值,如果需要可以使用内置的dataclasses模块)

namedtuple局限 1实例属性无法设置默认值 2虽然namedtuple但仍可以通过下标访问实例属性

改前

改后

虽然代码多了,但看的应该更清晰


http://www.ppmy.cn/devtools/41207.html

相关文章

【Vue】vue项目中使用百度地图教程

在Vue项目中显示百度地图,你需要遵循以下步骤: 1. 注册百度开发者账号并获取API密钥2. 在Vue项目中引入百度地图API3.在Vue组件中创建地图容器4. 在Vue组件中初始化地图5. 添加其他地图组件(可选)6. 处理地图事件(可选…

『 Linux 』重定向 Redirect(万字)

文章目录 🧸 什么是重定向🐡 文件描述符的分配规则🐡 重定向在日常使用中的简单示例 🧸 实现重定向的底层机制🐡 dup2()🐡 利用dup2()实现重定向 🧸 在自定义Shell当中添加重定向功能&#x1f4…

go导入包时提示no required module provides package解决方法

原因,这个包在你的本机没有安装 如redis包的提示为 could not import github.com/gomodule/redigo/redis (no required module provides package "github.com/gomodule/redigo/redis")解决方法: go get github.com/gomodule/redigo/redis

GDB的使用

即目标机直接使用GDB调试 源码安装: Index of /gnu/gdb 或者 wget https://ftp.gnu.org/gnu/gdb/gdb-8.3.1.tar.gz ./configure make main install 编译报错解决方法: 解决编译安装gdb-10.1 unistd.h:663:3: error: #error “Please include con…

【设计模式】之代理模式(两种)

系列文章目录 (其他设计模式可以参考 👉👉👉)设计模式_小杰不秃头的博客 😊😄😛 前言 今天继续给大家介绍23种设计模式中的代理模式,熟悉Spring的小伙伴都知道&#xf…

Java网络编程之TCP协议核心机制(一)

目录 题外话 正题 TCP协议核心机制 1.确认应答机制 2.超时重传 3.连接管理 三次握手(建立数据连接)和四次挥手(断开连接) 三次握手 三次握手的意义 为什么不能是四次挥手和两次挥手呢??? 四次挥手(断开连接) 四次挥手的意义 四次挥手能变为三次挥手吗? 小结 题…

Spring AOP切面实现为mapper层指定方法入参字段赋值

需求: 有时候我们在进行某些操作时,可能需要额外进行复制操作,而这些字段往往不是由前端/客户端填写输入的,而是由后端给与,类似于 登陆者、创建时间、更新时间等字段,这时,可以借助AOP指定mapp…

编程最佳实践-卫函数

文章目录 卫函数要解决什么问题?什么是卫函数正确使用卫函数的心法卫函数推荐使用场景检查输入参数处理特殊情况减少嵌套 卫函数不推荐使用场景示例 卫函数要解决什么问题? 卫函数主要解决的是if嵌套太深导致的代码可读性差的问题。实际开发场景中大家都…