当前位置: 首页 > news >正文

【Effective Python】读书笔记-05类与接口

1. 让组合起来的类来实现多层结构,不用使用嵌套的内置类型

2. 让简单的接口接收函数,而不是类的实例

from collections import defaultdictcurrent = {'a': 1,'b': 2,'c': 3,
}add_to_current = {'f': 4,'e': 5,
}def increment():count = 0def missing():nonlocal countcount += 1return 0result = defaultdict(missing, current)for key, val in add_to_current.items():result[key] += countreturn count, resultcount, result = increment()print(count, result)

某个类如果定义了__call__特殊方法,那么它的实例就可以像普通的 Python 函数那样调用。

3. 通过@classmethod 多态来构造同一体系中的各类对象

解决的问题:构造对象的办法不够通用

4. 通过 super 初始化超类

super 能够确保菱形继承体系中的共同超类只初始化一次

5. 考虑用 mix-in 类来表示可组合的功能

不实现__init__方法的类?

6. 优先考虑用 public 属性表示应受保护的数据,不要用 private 属性表示

如果子类中需要用到超类的属性,又不希望对外暴露,考虑申明为保护属性
只有一种情况应该是有私有属性,即避免命名冲突。

7. 自定义的容器类型应该从 collections.abc 继承

python 内置的 collections.abc 模块定义了一系列抽象基类(abstract base class),把每种容器类型应该提供的所有常用方法都写了出来。我们只需要从这样的抽象基类里面继承就好。同时,如果忘了实现某些必备的方法,那么程序会报错,提醒我们这些方法必须实现。

相关文章:

【Effective Python】读书笔记-05类与接口

1. 让组合起来的类来实现多层结构,不用使用嵌套的内置类型 2. 让简单的接口接收函数,而不是类的实例 from collections import defaultdictcurrent {a: 1,b: 2,c: 3, }add_to_current {f: 4,e: 5, }def increment():count 0def missing():nonlocal …...

【办公自动化】用Python在Excel中查找并替换数据(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

python学习随笔3

range的使用 range()在python很常用&#xff0c;可以进行初始化和遍历等。 # range(st,ed) # [st, ed)# range(st,ed,step) # range(st, ed, step) i,i step, i 2 * step ... () < ed切片 跟range类似。 ll[st:ed:step]容器 元组 python中的元组中内容不可以进行更…...

《TCP/IP网络编程》阅读笔记--epoll的使用

1--epoll的优点 select()的缺点&#xff1a; ① 调用 select() 函数后针对所有文件描述符的循环语句&#xff1b; ② 调用 select() 函数时需要向操作系统传递监视对象信息&#xff1b; epoll()的优点&#xff1a; ① 无需编写以监视状态变化为目的的针对所有文件描述符的循环语…...

Python 递归函数

视频版教程 Python3零基础7天入门实战视频教程 在一个函数体内调用它自身&#xff0c;被称为函数递归。函数递归包含了一种隐式的循环&#xff0c;它会重复执行某段代码&#xff0c;但这种重复执行无须循环控制。 实例&#xff0c;求123…100的和&#xff0c;用递归实现。数学…...

Java实现计算两个日期之间的工作日天数

需求&#xff1a; 需要在后端实现 计算当前日期与数据库内保存的日期数据之间相隔的工作日数目 实现 import java.time.DayOfWeek; import java.time.LocalDateTime;public class WorkdaysCalculator {public static void main(String[] args) {String givenDateTimeStr &q…...

CS5817规格书|CS5817芯片参数|多功能便携式显示器方案芯片规格

CS5817支持最高4K 60Hz是集睿致远&#xff08;ASL&#xff09; 新推出的多功能显示控制器芯片&#xff0c;CS5817产品可应用于便携显示器、电竞显示器、桌面显示器、一体式台式机和嵌入式显示系统。 Type-C/DP/HDMI2.0输入转LVDS/eDP/VBO 芯片, 高度集成了多种输入输出接口, 并…...

2023面试知识点一

1、新生代和老年代的比例 默认的&#xff0c;新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )&#xff0c;即&#xff1a;新生代 ( Young ) 1/3 的堆空间大小。老年代 ( Old ) 2/3 的堆空间大小。其中&#xff0c;新生代 ( …...

【算法题】2856. 删除数对后的最小数组长度

题目&#xff1a; 给你一个下标从 0 开始的 非递减 整数数组 nums 。 你可以执行以下操作任意次&#xff1a; 选择 两个 下标 i 和 j &#xff0c;满足 i < j 且 nums[i] < nums[j] 。 将 nums 中下标在 i 和 j 处的元素删除。剩余元素按照原来的顺序组成新的数组&…...

Java面向对象编程

在关系型是数据库中&#xff0c;有两个不同的事务同时操作数据库中同一表的同一行&#xff0c;不会引起冲突的是&#xff1a; A. 其中一个DELETE操作&#xff0c;一个是SELECT操作 B. 其中两个都是UPDATE C. 其中一个是SELECT&#xff0c;一个是UPDATE D. 其中一个SELECT E. 其…...

K8S:Yaml文件详解及编写示例

文章目录 一.Yaml文件详解1.Yaml文件格式2.YAML 语法格式 二.Yaml文件编写及相关概念1.查看 api 资源版本标签2.yaml编写案例&#xff08;1&#xff09;相关标签介绍&#xff08;2&#xff09;Deployment类型编写nginx服务&#xff08;3&#xff09;k8s集群中的port介绍&#x…...

去耦电路设计应用指南(一)MCU去耦设计介绍

&#xff08;一&#xff09;MCU去耦设计介绍 1. 概述2. MCU需要去耦的原因2.1 去耦电路简介2.2 电源噪声产生的原因2.3 插入损耗2.4 去耦电路简介 参考资料来自网上&#xff1a; 1. 概述 我们经常看到单片机或者IC电路管脚常常会放置一个或者多个陶瓷电容&#xff0c;他们主要…...

【c++】杂记

文章目录 预处理器constauto 预处理器 预处理器&#xff1a;运行于编译过程之前的一段程序 预处理变量&#xff1a;不属于命名空间std,由预处理器负责管理 const const对象一旦创建就不再改变 const对象必须初始化 const对象旨在文件内有效 ectern const int bufsizefun() /…...

简记:使用 Django Shell 清空 数据库表

简记 使用 Django Shell 清空所有数据库表 jcLee95的博客&#xff1a;https://blog.csdn.net/qq_28550263 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/132862795 目 录 1. 描述2. 步骤备份重要数据进入 Django Shell输入脚本 1. 描述 由于历史的…...

Web项目测试

http: //localhost: 8080 /shop1/ 协议 服务器的地址 端口号 相应的代码文件或文件夹 127.0.0.1 (服务器所在的端口) Web项目测试:系统测试 Web项目测试要做什么类型:接口测试、功能测试、性能测试、兼容性测试、安全测试、界面测试、易…...

Springboot 集成 Ehcache 提示 Cannot find cache named ‘employee_all‘ for Builder

异常提示&#xff1a; java.lang.IllegalArgumentException: Cannot find cache named employee_all for Builder[public java.lang.Iterable org.bc.device.service.EmployeeService.findAll()] caches[employee_all] | key | keyGeneratorkeyGenerator | cacheManager | cac…...

pandas 笔记:shift

用于将数据系列或数据框中的数据按指定的位置移动。这对于某些时间序列分析特别有用&#xff0c;例如计算数据的变化量或滞后值 1 对Series/DataFrame数据进行移动 1.0 原始数据 import pandas as pd import numpy as np df1pd.DataFrame(np.arange(12).reshape(3,4),column…...

解密(2023寒假每日一题 20)

给定一个正整数 k k k &#xff0c;有 k k k 次询问&#xff0c;每次给定三个正整数 n i , e i , d i n_i,e_i,d_i ni​,ei​,di​ &#xff0c;求两个正整数 p i , q i p_i,q_i pi​,qi​ &#xff0c;使 n i p i q i &#xff0c; e i d i ( p i − 1 ) ( q i − 1 …...

如何实现Web应用、网站状态的监控?

如何实现Web应用、网站状态的监控&#xff1f; 关键词&#xff1a;网站监控,服务器监控,页面性能监控,用户体验监控本文通过代码分析、网站应用介绍网站状态监控的方式下文主要分为网站应用、技术实现两部分 一、网站应用 现在网络上已经存在一些Web网站监控的服务&#xff…...

手撕排序之堆排序

一、概念&#xff1a; 什么是逻辑结构、物理结构&#xff1f; 逻辑结构&#xff1a;是我们自己想象出来的&#xff0c;就像内存中不存在一个真正的树 物理结构(存储结构)&#xff1a;实际上在内存中存储的形式。 堆的逻辑结构是一颗完全二叉树 堆的物理结构是一个数组 之…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...