20个超实用Python魔法方法

news2024/12/23 0:50:20

图片

大家好!今天我们要一起探索Python世界的神秘角落——那些被称为“魔法方法”的特殊成员方法。它们就像是编程中的魔法咒语,赋予你的类各种神奇特性,让你的代码更加简洁、强大且有趣味!

  1. __init__:这是每个对象出生时都要经历的洗礼仪式,我们通过它初始化新创建的对象。

  2. __str__ & __repr__:这两个小兄弟负责将对象变成易于理解的字符串形式,前者用于友好的显示,后者则是面向开发者更详尽的表示。

  3. __add__ & __sub__ 等运算符重载方法:想象你在编写一个自定义的数字类型,让它们可以像普通数字那样进行加减乘除,这些魔法方法就是实现这个目标的关键。

  4. __eq__ & __lt__:判断两个对象是否相等或大小关系,就像在比较苹果和橘子哪个更甜一样简单。

  5. __len__:当你想问一个对象“你有多长”时,它会调用这个方法来告诉你它的长度或者元素数量。

  6. __getitem__ & __setitem__:让你的对象支持索引操作,就像字典和列表那样,可以使用方括号[]来获取或设置值。

  7. __getattr__ & __setattr__:当试图访问或修改对象属性时,如果你有特殊的处理逻辑,就由这两个方法来施展魔法。

  8. __call__:让你的对象成为一个可调用对象,就像函数那样可以直接加上括号并传递参数。

  9. __enter__ & __exit__:这两个方法是上下文管理协议的核心,让你的对象能无缝融入with语句中。

  10. __iter__ & __next__:如果你希望你的类能够被for循环遍历,那么这就是开启迭代器魔力的钥匙。

  11. __slots__:这虽不是一个方法,但如同魔法一般限制了类实例的属性空间,提升内存效率。

  12. __getattribute__:深度控制对象属性访问的魔法方法,比__getattr__更具威力。

  13. __del__:当对象即将离开舞台时,你可以通过此方法安排它的善后工作,如资源释放。

  14. __dir__:返回对象公开的属性和方法名列表,方便IDE和其他工具查看对象结构。

  15. __new__:在对象实例化之前介入,定制对象创建过程,真正的幕后魔法师。

  16. __bool__:决定对象在条件表达式中如何表现,比如if语句中是否被视为True。

  17. __format__:允许你自定义对象如何被格式化字符串所格式化输出。

  18. __hash__:如果你希望对象能作为字典键或者其他哈希容器的元素,就需要实现这个方法来计算其哈希值。

  19. __copy__ 和 __deepcopy__:对于复制操作,你可以通过这两个方法定义浅复制和深复制的行为。

  20. __class_getitem__:Python 3.7开始支持,用于类型提示中的泛型语法,为类型注解提供强大的支持。

以上就是Python中的20个魔法方法,掌握它们,你的编程之旅将会充满惊奇与乐趣,让你的代码更加生动灵活。记得,在合适的场景下巧妙运用这些魔法方法,会让你的Python程序拥有超乎想象的力量!

往期精选:

18个 Python 正则表达式大揭秘

Python异常处理:10种常见错误详解

20个高级有趣的 python 函数

 文末福利/每周赠书

活动详情链接:每周赠书活动第一期--ChatGPT 实操应用大全

参与方式: 关注下方公众号,后台回复抽奖获取抽奖链接

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

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

相关文章

Python爬虫实战—探索某网站电影排名

文章目录 Python爬虫实战—探索某网站电影排名准备工作编写爬虫代码代码解析运行情况截图进一步优化和说明完整代码总结 说明:本案例以XXX网站为例,已隐去具体网站名称与地址。 Python爬虫实战—探索某网站电影排名 网络爬虫是一种自动化程序&#xff0…

多线程的学习1

多线程 线程是操作系统能够进入运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程:是程序的基本执行实体。 并发:在同一个时刻,有多个指令在单个CPU上交替执行。 并行:在同一时刻&#xff0c…

js改变图片曝光度(高亮度)

方法一: 原理: 使用canvas进行滤镜操作,通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg,而不是canvas 调整出来的效果不是很好,图片不是高亮,而是有些发白 效果 代码 …

OC对象 - Block解决循环引用

文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用…

GitHub如何验证2FA,烦人的认证,看完几分钟解锁

序言 今天需要使用GitHub,还是不能用,需要2FA认证,没办法,还是让2FA认证流程来,一一解决,在解决这认证问题之前,先说说2FA认证是什么? 什么是2FA 2FA 是指两步验证(Two…

用搜索引擎收集信息-常用方式

1,site csdn.net (下图表示只在csdn网站里搜索java) 2,filetype:pdf (表示只检索某pdf文件类型) 表示在浏览器里面查找有关java的pdf文件 3,intitle:花花 (表示搜索网页标题里面有花…

【小尘送书-第十五期】Excel函数与公式应用大全for Excel 365 Excel

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

python--初学函数

函数(function): 什么是函数? 具有名称的,是为了解决某一问题,功能代码的集合,叫做函数 python中函数如何定义:def>define function定义函数 def function_name([args临时变量…

【QA】MySQL多表查询详解

文章目录 前言关系型数据库中数据表之间的关系数据准备数据内容表间关系 基础查询 | 全部查询多表查询分类1 | 连接查询内连接外连接 | 左外连接外连接 | 右外连接自连接 | 自连接自连接 | 联合查询 分类2 | 子查询返回结果分类 | 标量子查询返回结果分类 | 列子查询返回结果分…

linux centos7中使用 Postfix 和Dovecot搭建邮件系统

作者主页:点击! Linux专栏:点击! Postfix Postfix是一个开源的邮件传输代理(MTA),用于路由和传送电子邮件。它是一个可靠、安全且高性能的邮件服务器软件,常用于搭建邮件系统的核心…

redis简介及常用命令

一、关系数据库与非关系型数据库 1.1、关系型数据库 一个结构化的数据库,创建在关系模型基础上一般面向于记录包括:Oracle、MySQL、SQL Server、Microsoft Access、DB2等以上数据库在使用的时候必须先建库建表设计表结构,然后存储数据的时候…

centos7系统下nginx1.24.0升级

如果没有这些目录,请先创建: mkdir /data/software mkdir /data/program提前下载所需的软件: cd /data/software wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz wget https://nginx.org/download/nginx-1.24.0.tar.gz安装nginx cd /data/soft…

AM5SE系列微机保护装置在临沂奥体中心配电工程中的应用

摘 要:目前,微机保护装置广泛应用于电力系统中,该类装置能够有效监测电力系统的运行状况,并实时记录电力系统出现故障的位置及性质,从而为故障的快速处理提供有效的参考信息。本文介绍的AM5SE系列微机保护装置可以针对…

PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十六)

PCL点云处理之M估计样本一致性(MSAC)平面拟合(二百三十五六) 一、算法介绍二、使用步骤1.代码2.效果一、算法介绍 写论文当然用RANSAC的优化变种算法MSAC啊,RANSAC太土太LOW了哈哈 MSAC算法(M-estimator Sample Consensus)是RANSAC(Random Sample Consensus)的一种…

【华大 HC32L110】调用`printf`和串口接收中断的冲突问题解决

华大单片机 HC32L110调用printf和串口接收中断的冲突问题解决,经过查找是官方库 去使能了 串口的接收功能,记录解决问题的过程 目录 1.硬件MCU资料2. printf和串口接收中断的冲突解决3.重新封装 fputc 函数4.查找问题,发现是官方库配置有误5. 查找寄存器手册,修改寄存器配置…

Discord账号多开如何做?有什么办法可以同时在线?

Discord 是一款免费的语音和文本聊天应用程序。它是一个游戏聊天应用程序和社区,最初是游戏的语音和IM服务,然后转向直播,然后是游戏商店的社区平台。它成为游戏玩家在游戏中交流和协作的首选工具。下面将为你介绍如何同时使用多个discord账号…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件(系统)IO(含动静态库的链接操作)1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…

【JavaEE】初识线程,线程与进程的区别

文章目录 ✍线程是什么?✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么? ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…

Element-Plus下拉菜单边框去除教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

InputStream字节输入流和OutStream字节输出流

InputStream InputStream是Java标准库最基本的输入流,在java.io包内。它是一个抽象类。 FileInputStream:从文件中读取数据,是最终数据源。 int read()方法:读取输入流的下一个字节,并返回字节表示的int值(…