python 魔术方法备忘录

python 魔术方法备忘录 网上收集了一些,列出了比较常用的,特别是第一张。
在这里插入图片描述

在这里插入图片描述

Python中的魔术方法(Magic Methods),也被称为特殊方法(Special Methods)或双下划线方法(Dunder Methods),是以双下划线开头和结尾的方法。这些方法让我们能够实现许多特殊的操作,例如算术运算、字符串表示、对象比较等。以下是一些常见的Python魔术方法及其用途:

1. 初始化和表示

  • __init__(self, ...):对象初始化方法(构造函数),在创建对象时调用。
  • __del__(self):对象销毁方法(析构函数),在对象被删除时调用。
  • __repr__(self):返回对象的官方字符串表示,通常可以通过eval函数重新创建该对象。
  • __str__(self):返回对象的非正式字符串表示,通常用于打印对象。

2. 容器和迭代

  • __len__(self):返回对象的长度,适用于内置函数len()
  • __getitem__(self, key):获取指定键的值,用于索引操作。
  • __setitem__(self, key, value):设置指定键的值。
  • __delitem__(self, key):删除指定键的值。
  • __iter__(self):返回迭代器对象,定义对象的迭代行为。
  • __next__(self):返回迭代器的下一个值。

3. 算术运算

  • __add__(self, other):实现加法运算。
  • __sub__(self, other):实现减法运算。
  • __mul__(self, other):实现乘法运算。
  • __truediv__(self, other):实现除法运算。
  • __floordiv__(self, other):实现整数除法运算。
  • __mod__(self, other):实现取模运算。
  • __pow__(self, other):实现幂运算。

4. 反向运算

  • __radd__(self, other):实现反向加法运算。
  • __rsub__(self, other):实现反向减法运算。
  • __rmul__(self, other):实现反向乘法运算。
  • __rtruediv__(self, other):实现反向除法运算。
  • __rfloordiv__(self, other):实现反向整数除法运算。
  • __rmod__(self, other):实现反向取模运算。
  • __rpow__(self, other):实现反向幂运算。

5. 比较运算

  • __eq__(self, other):实现等于运算。
  • __ne__(self, other):实现不等于运算。
  • __lt__(self, other):实现小于运算。
  • __le__(self, other):实现小于等于运算。
  • __gt__(self, other):实现大于运算。
  • __ge__(self, other):实现大于等于运算。

6. 类型转换

  • __int__(self):将对象转换为整数。
  • __float__(self):将对象转换为浮点数。
  • __complex__(self):将对象转换为复数。
  • __bool__(self):将对象转换为布尔值。
  • __index__(self):实现整数类型转换,适用于切片操作。

7. 属性访问

  • __getattr__(self, name):在属性不存在时调用。
  • __getattribute__(self, name):访问任意属性时调用。
  • __setattr__(self, name, value):设置任意属性时调用。
  • __delattr__(self, name):删除任意属性时调用。

8. 上下文管理

  • __enter__(self):进入上下文管理器时调用。
  • __exit__(self, exc_type, exc_value, traceback):退出上下文管理器时调用。

9. 调用对象

  • __call__(self, ...):使对象可以像函数一样被调用。

这些魔术方法可以让我们自定义对象的行为,使其更加符合我们需要的操作方式。通过重载这些方法,我们可以让对象支持各种操作符、内置函数和特定行为。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

保安员精选历年试题(附答案)

一、单选题 1.保安从业人员在协助维护社会治安工作中已成为一支重要的社会(B)力量。 A:技术防范 B:安全防范 C:人力防范 D:公共防范 2.目前我国保安服务已经从单一的人力保安,发展为守护、(A)、押运、安全技术防范等四大主要业务。 A:巡逻 B:咨询 C:犬防 D:开锁…

Python三引号(“““)的五个神奇用法,你真的都知道吗?

大家好!这里是快乐吗喽敲代码,今天我们来聊一聊 Python 中的一个神奇字符——三引号(""")。三引号"""不仅仅是用来定义多行字符串的简单工具,它还隐藏着许多令人惊叹的用途。 什么是三引…

数据结构与算法笔记:基础篇 -递归树:如何借助树来求解递归算法的时间复杂度?

概述 我们都知道,递归代码的时间复杂度分析起来很麻烦。在《排序(下)》哪里讲过,如何用递推公式,求解归并排序、快速排序的时间复杂度,但是有些情况,比如快排的平均时间复杂度的分析,用递推公式的话&#…

软件下载网站源码附手机版和图文教程

PHP游戏应用市场APP软件下载平台网站源码手机版 可自行打包APP,带下载统计,带多套模板,带图文教程,可以做软件库,也可以做推广app下载等等,需要的朋友可以下载 源码下载 软件下载网站源码附手机版和图文…

JavaEE大作业之班级通讯录系统(前端HTML+后端JavaEE实现)PS:也可选网络留言板、图书借阅系统、寝室管理系统

背景: 题目要求: 题目一:班级通讯录【我们选这个】 实现一个B/S结构的电子通讯录,其中的每条记录至少包含学号、姓名、性别、班级、手机号、QQ号、微信号,需要实现如下功能: (1)…

【源码】校园小情书小程序最新版 校园小程序开发 微信情书小程序 校园小情书小程序源代码

校园小情书微信小程序源码 | 社区小程序前后端开源 | 校园表白墙交友小程序 功能: 表白墙 卖舍友 步数旅行 步数排行榜 情侣脸 漫画脸 个人主页 私信 站内消息 今日话题 评论点赞收藏 服务器环境要求:PHP7.0 MySQL5.7 …

分布式系统设计指南

目录 一、分布式简介 二、分布式系统核心概念 2.1 CAP 理论 2.2 BASE 原理 三、分布式系统设计 3.1 微服务拆分 3.2 通信模型 3.3 负载均衡 3.4 数据一致性 3.5 容错限流 3.6 扩展性 3.7 监控预警 3.8 自动化运维 一、分布式简介 分布式系统是由单体应用发展而来的&#xff…

Java面试八股之super()和this()的区别

super()和this()的区别 super() 目的:super()用于从子类的构造方法中调用父类(超类)的构造方法。这是为了确保父类的初始化操作得以执行,因为子类继承了父类的属性和方法,可能需要先设置好父类的状态。 位置&#x…

【基于detectron2训练数据集】

基于detectron2训练自己的数据集 1. 首先下载官方提供的baloon数据集2. 转换成detectron2的格式3. 训练4. 测试与评价 1. 首先下载官方提供的baloon数据集 import wget from zipfile import ZipFiledef progress_bar(current, total, width80):progress current / totalbar …

rockchip ARM TrustZone

系统架构 分为安全世界和非安全世界。Loader、Trust 运行在安全世界;U-Boot、kernel、Android 运行在非安全世界里(安全的 driver、APP 除外)。 “hypervisor”常见释义为“管理程序”“虚拟机监控器”“超级监督者”。 它是一种可以创建、…

C#发送邮件

C#发送邮件代码,亲测可用。 using System; using System.Net; using System.Net.Mail;namespace MailSend {class Program{static void Main(string[] args){try{MailAddress receiver new MailAddress("666666666qq.com");//666666666qq.com 换成收件人…

天花板复合材料热释放率检测 ISO 5660-1燃烧试验

ISO 5660-1标准简介 ISO 5660-1是国际标准化组织(ISO)制定的一项关于燃烧试验的标准,专门用于测量材料在火灾条件下的热释放率、烟雾产生量和质量损失率。该标准的第1部分主要关注热释放率的测量和评估,是对材料在火灾条件下反应的…

桌面记事软件除了记事本还有什么

在忙碌的工作日,我的桌面总是堆满了各种文件、资料,还有贴满便签的记事本。每次需要查找某个信息或者确认接下来的计划时,我都要在杂乱的桌面上翻找好一会儿,这让我感到非常烦恼。 有一天,我急着找一个之前记录的重要…

地理信息科学中的大数据挑战

在信息化爆炸的时代,地理信息科学(GIScience)正经历着前所未有的变革,其中,地理空间大数据的涌现为科学研究与应用带来了前所未有的机遇与挑战。作为地理信息与遥感领域的探索者,本文旨在深入剖析地理空间大…

java面试整合全套

什么是Java (定义 优点) java是一个平台,由jvm和Java应用编程接口构成的一门面向编程语言。 不仅吸收了C语言的各种优点,还摒弃了c语言里面的多继承,指针等概念,因此java的特征主要有功能强大和简单易用的特征。 jav…

HarmonyOS(33) @LocalStorageProp使用指南

LocalStorageProp使用指南 说明使用示例参考资料 说明 不同于LocalStorageLink与LocalStorage建立的双向同步关系,LocalStorageProp装饰的变量与LocalStorage中给定属性建立单向同步关系。LocalStorageProp(key)是和LocalStorage中key对应的属性建立单向数据同步&a…

深入浅出通信原理 | 通信系统中的性能指标评估

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、通信系统中的性能指…

uniapp学习(001 前期介绍)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第1p-第p10的内容 简介 目录结构 效果 打包成小程序 配置开发者工具 打开安全按钮 使用uniapp的内置组件…

linux-计划任务

作用:定时自动完成特定的工作 计划任务的分类 一次性的计划任务:例如下周三对文档的重要文件备份一次 周期性的计划任务:每天12:00创建一个文件 命令 一次性的任务计划 at batch 周期性计划任务 crontab anacron 一次性计划任务 …

JVM (四)GC过程

一。概述 程序计数器、虚拟机栈、本地方法栈都是随线程生灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,内存垃圾回收主要集中于Java堆和方法区中。 GC整体流程示意图: ① 年轻代对象的移动…