python 魔法方法简记

news2024/11/16 11:32:37

简单记录python中的魔法方法

一、构造与析构

__init__(self[,...])

需要初始化时可重写__init__方法

__new__(cls[,...])

以类为参数,返回实例化对象

__del__(self)

前两个为构造器,此为析构器,用于销毁对象

二、算术运算

1、算术运算相关的魔法方法

python的算数运算魔法方法如下

以上方法可以自己定义,就可以修改对应的算数运算规则

2、反运算

正运算不支持,python会自动调用反运算

python反运算的魔法方法如下

同样的,反运算也可以重写

3、一元操作符

Python支持的一元操作符如下:

_ _neg_ _()表示正号行为

_ _pos_ _()表示定义负号行为

_ _abs_ _()表示定义abs()函数(取绝对值)被调用时的行为

_ _invert_ _()表示定义按位取反的行为

三、属性相关

属性相关的魔法方法如下

四、描述符相关

描述符就是将某种特殊类型的类的实例指派给另一个类的属性,特殊类型的类,里边要至少定义_ _get_ _()、_ _set_ _()或_ _delete_ _()三个特殊方法中的一个。

描述符相关的魔法方法如下

五、容器相关

在Python中,像序列类型(如列表、元组、字符串)或映射类型(如字典)都属于容器类型。

容器类型相关魔法方法如下:

定制容器,需要注意以下两点:

如果希望定制的容器不可变,则只需要定义_ _len_ _()和_ _getitem_ _()方法。

如果希望定制的容器是可变的,除了_ _len_ _()和_ _getitem_ _()方法,至少还需要定义_ _setitem_ _()和_ _delitem_ _()两个方法。

六、迭代器

关于实现迭代器的魔法方法有两个:_ _iter_ _()和_ _next_ _()。

一个容器如果是迭代器,那就必须实现_ _iter_ _()魔法方法,这个方法实际上就是返回迭代器本身,而_ _next_ _()魔法方法决定了迭代器的规则

七、相关补充

1、生成器

生成器其实是迭代器的一种实现,但迭代器需要我们去定义一个类和实现相关的方法,而生成器则只需要在普通的函数中加上一个yield语句即可

生成器的发明使得Python模仿协同程序的概念得以实现。

协同程序,是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。

生成器可以暂时挂起函数,并保留函数的局部变量等数据,然后再次调用它的时候,从上次暂停的位置继续执行下去。

2、推导式

python有列表推导式、字典推导式、集合推导式等推导式可以使用,可以很大程度节约代码量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置? 方法一:使用7-Zip免费且强大的文件管理工具 7-Zip也是一…

MATLAB定位程序与讲解【专栏介绍】

AOA(到达角度)定位原理: 描述了基于到达角度进行定位的方法,适用于一维、二维或三维空间。 由动静压之比求马赫数的MATLAB函数: 提供了一个计算马赫数的函数,用于流体力学中速度的计算。 三边法定位与三点法…

【电子通识】案例:连接器接线顺序评估为什么新人总是评估不到位?

在一个IC卡切换的工装板(一切多)中,设计需求是一张PCB(充当活动卡片)插入读卡器,将卡片中的所有信号引出通过连接器连接到后级设备。 比如下图所示是一种IC卡压力测试设备,使用钢片卡片将压力信号通过连接器引入测试设备。 最后根据ISO/IEC 7816-2标准中我们看到…

hexo本地部署-图文教程

hexo本地部署-图文教程 最终效果前置条件安装使用配置主题创建页面标签页分类页友链页404页 个性化设置语言及网站信息设置导航栏,菜单目录头像及背景封面图美化特效 模板页的配置说明页面 Front-matter文章 Front-matter 最终效果 前置条件 你的电脑需要有git,node环境 安装使…

MySQL 中优化 COUNT()查询的实用指南

在 MySQL 数据库的使用中,我们经常会用到 COUNT()函数来统计行数或满足特定条件的行数。然而,在处理大规模数据时,COUNT()查询可能会变得非常缓慢,影响数据库的性能。那么,如何在 MySQL 中优化 COUNT()查询呢&#xff…

TRIZ理论在机器人性能优化中的应用

随着机器人应用场景的不断拓展,对机器人性能的要求也日益提高。如何在保证功能多样化的同时,提升机器人的性能稳定性、效率及智能化水平,成为了工程师和研发人员面临的重大挑战。TRIZ理论,即发明问题解决理论,以其系统…

Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学

🎯要点 统计观测值之间距离计算代谢组学和脂质组学分析相关距离矩阵计算卡方检验偏差校正快速计算距离协方差算法大规模生物系统分析距离矩阵相关性测试石油勘探统计学关系 Python距离矩阵 在数学、计算机科学,尤其是图论中,距离矩阵是一…

02-Mybatis基础操作

1. Mybatis基础操作 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询条件查询 新增更新删除 根…

FreeRTOS(四)FreeRTOS列表与列表项

目录 列表 列表项 迷你列表项 列表和列表项的关系 列表相关API函数 列表初始化 列表项初始化 列表项插入 列表项末尾插入 列表项删除 列表遍历 在 FreeRTOS 中,列表(List)和列表项(ListItem)是核心数据结构&…

如何防止订单重复

如何防止订单重复 在整个下单流程中,哪里重复操作影响最大?确认订单只是修改订单状态从未支付改为待支付而已,不会对我们的主要业务产生影响,而在支付的时候,主要由第三方平台,我们也可以不用管&#xff0c…

记一次Windows状态栏不显示问题

文章目录 🪟解决方案☁️单次处理☁️有效处理 🪟现象🪟尝试的操作⭐END🌟跋🌟交流方式 🪟解决方案 ☁️单次处理 重启explorer.exe 命令行操作 注意,使用命令行操作的时候,出现…

Cocos 3.8.3 实现外描边效果(逃课玩法)

本来想着用Cocos 的Shader Graph照搬Unity的思路来加外描边,发现不行,然后我就想弄两个物体不就行了吗,一个是放大的版本,再放大的版本上加一个材质,这个材质面剔除选择前面的面剔除就行了,果不其然还真行。…

字幕制作软件有哪些?整理了适合新手的5个方法,快速导出srt字幕文件!

字幕制作软件有哪些?平时创作视频作品时,大部分会用到字幕。毕竟字幕是视频中不可或缺的一部分,字幕文件在传达视频内容上达到了重要的作用。 常见的字幕文件有srt、ass和sub格式。市面上比较常用的是srt字幕格式,这种格式几乎适用…

滑动窗口 -- 限制窗口内某元素的数量/种类

目录 长度最小的数组 题解: 将x减到0的最小操作数 题解: 最大连续1的个数 题解: 无重复字符的最长子串(限制数量) 题解: 水果成篮(限制种类) 题解: 找到字符串中…

Skywalking告警配置

背景 skywalking 9.7.0,地址:Backend setup | Apache SkyWalking helm:skywalking-helm:4.5.0,地址:skywalking-helm/chart/skywalking/values.yaml at v4.5.0 首先来说一下为什么使用skywalking告警? …

[半导体检测-6]:为什么晶圆缺陷检测精度越高,所需要的光源的波长越短?

目录 前言: 1. 光束的聚焦能力 1.1 概述 1.2 光束的聚焦能力用什么指标来标识? 1. 光束质量因子(M因子) 2. 衍射极限倍数(β因子) 3. 斯特列尔比(Strehl Ratio) 4. 远场发散…

Spring6梳理13——依赖注入之引入集合Bean属性

以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 13 依赖注入之引入集合Bean属性 13.1 创建Lesson类,student类和teacher实体类…

【LeetCode:2535. 数组元素和与数字和的绝对差 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

jmeter性能测试---csv数据文件设置

(1)什么时候使用CSV数据文件设置? 当不同的用户,或者同一用户多次循环时,都可以获取到不同的值 (2)使用CSV数据文件设置进行参数化的步骤? 实例: 请求:htt…

基于Node.js+Express+MySQL+VUE实现的计算机毕业设计共享单车管理网站

单车信息选择骑行 骑行状态留言公告/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 功能如下: 一、开发目标 在共享经济日益盛行的今天,共享单车作为一种绿色、便捷的出行方式,已经深入人们的日常生活。然而,随着共享…