魔法方法是Python对象行为的底层接口,使类支持打印(__str__用户友好、__repr__开发者调试)、运算(__add__等)、比较(__eq__、__lt__等)和迭代等功能。
Python的魔法方法(也叫dunder方法,即双下划线方法)不是炫技工具,而是让你的对象真正“活起来”的底层接口。用对了,类就能像内置类型一样支持加减、打印、比较、迭代甚至上下文管理。
默认情况下,打印自定义对象只看到一串内存地址,很不直观。__str__ 控制用户友好的字符串表示,__repr__ 则面向开发者,要求尽可能精确、可调试(理想情况下 eval(repr(obj)) 能重建对象)。
"Person(name='Alice', age=30)"
"Person('Alice', 30)"
想让两个 Vector 实例直接相加?或让 Money 类支持金额叠加?不用写 add() 方法,直接实现对应 dunder 方法即可。
__add__(self, other),+ 操作就会调用它;注意检查 other 类型,不支持时返回 NotImplemented(不是异常!),让 Python 尝试调用 other.__radd__
__sub__(-)、__mul__(*)、__truediv__(/)、__floordiv__(//)、__mod__(%)__radd__ 在 10 + obj 这类左操作数不是本类时起作用,避免报错默认的 == 只比内存地址,毫无业务意义。重载比较方法后,对象就能放进 set、做字典键、用 sorted 排序。
__eq__(self, other) 决定 == 是否成立(记得同时实现 __hash__ 才能进 set 或作 dict 键)__lt__(__le__(__eq__、__ne__、__gt__(>)、__ge__(>=)中的部分,配合 functools.total_ordering 装饰器,其余会自动补全card1 就是自然语义,无需 card1.is_less_than(card2)
资源管理与迭代是高频需求,dunder 方法让语法糖真正落地。
__enter__(self) 返回进入 with 块时的值(常是 self),__exit__(self, exc_type, exc_val, exc_tb) 处理退出逻辑(如关闭文件、回滚事务),无论是否异常都会执行__iter__(self) 返回一个迭代器(通常返回 self 或新对象),再在该对象中实现 __next__(self) 返回下一个值,抛出 StopIteration 表示结束__iter__ 可直接用 yield 写成生成器函数,Python 自动构造迭代器不复杂但容易忽略。它们不是必须写的装饰,而是让类融入 Python
生态的契约——写得越自然,别人用起来就越顺手。
相关文章:
如何用y主机助手快速搭建网站?
建站之星如何一键生成手机站?
如何选择美橙互联多站合一建站方案?
如何通过商城免费建站系统源码自定义网站主题?
建站之星如何通过成品分离优化网站效率?
宝塔建站助手安装配置与建站模板使用全流程解析
如何快速启动建站代理加盟业务?
行程制作网站有哪些,第三方机票电子行程单怎么开?
如何在橙子建站上传落地页?操作指南详解
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
建站VPS配置与SEO优化指南:关键词排名提升策略
如何设置并定期更换建站之星安全管理员密码?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何用已有域名快速搭建网站?
贸易公司网站制作流程,出口贸易网站设计怎么做?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
建站ABC备案流程中有哪些关键注意事项?
如何通过VPS搭建网站快速盈利?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
三星网站视频制作教程下载,三星w23网页如何全屏?
动图在线制作网站有哪些,滑动动图图集怎么做?
制作表格网站有哪些,线上表格怎么弄?
如何基于云服务器快速搭建个人网站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
网站app免费制作软件,能免费看各大网站视频的手机app?
如何做网站制作流程,*游戏网站怎么搭建?
建站三合一如何选?哪家性价比更高?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
企业微网站怎么做,公司网站和公众号有什么区别?
香港服务器租用每月最低只需15元?
北京网站制作网页,网站升级改版需要多久?
学校为何禁止电信移动建设网站?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在搬瓦工VPS快速搭建网站?
如何高效完成自助建站业务培训?
音乐网站服务器如何优化API响应速度?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
微信h5制作网站有哪些,免费微信H5页面制作工具?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何在Windows服务器上快速搭建网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何用VPS主机快速搭建个人网站?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
*请认真填写需求信息,我们会在24小时内与您取得联系。