新闻中心
python魔法方法有哪几种?
Python魔法方法通过双下划线命名实现类的特殊行为定制,如__init__初始化实例,__str__和__repr__定义字符串表示,__add__等支持数值运算,__len__、__getitem__实现容器功能,__getattr__控制属性访问,__call__使对象可调用,__enter__和__exit__管理上下文,按需使用可自定义对象与内置机制的交互。

Python的魔法方法(也叫特殊方法或双下方法)是以双下划线开头和结尾的方法,用于自定义类的行为。它们让对象支持内置操作,比如加法、字符串表示、属性访问等。下面是一些常见的魔法方法分类和用途:
1. 对象初始化与创建
__init__(self, ...):最常用的构造方法,用于初始化实例。
__new__(cls, ...):在实例创建之前调用,控制对象的生成过程,常用于单例模式或不可变类型定制。
__del__(self):析构方法,在对象被销毁前调用(不保证立即执行)。
2. 字符串和表示
__str__(self):返回对象的可读字符串表示,用于print()或str()。
__repr__(self):返回更详细的字符串表示,用于调试,理想情况下应能重建对象。
__format__(self, format_spec):支持格式化输出,如f"{obj:fmt}"。
3. 数值运算
__add__(s
elf, other):实现加法 +
__sub__(self, other):减法 -
__mul__(self, other):乘法 *
__truediv__(self, other):真除法 /
__floordiv__(self, other):整除 //
__mod__(self, other):取模 %
__pow__(self, other):幂运算 **
还有对应的反向操作:__radd__、__rmul__ 等,用于当左操作数不支持该运算时调用。
以及增强赋值:__iadd__(+=)、__imul__(*=)等。
4. 比较操作
__eq__(self, other):等于 ==
__ne__(self, other):不等于 !=
__lt__(self, other):小于
__le__(self, other):小于等于
__gt__(self, other):大于 >
__ge__(self, other):大于等于 >=
5. 容器和集合相关
__len__(self):返回长度,用于len(obj)
__getitem__(self, key):获取元素,如obj[key]
__setitem__(self, key, value):设置元素,如obj[key] = value
__delitem__(self, key):删除元素,如del obj[key]
__iter__(self):返回迭代器,用于for循环
__contains__(self, item):支持in操作
6. 属性访问控制
__getattr__(self, name):访问不存在的属性时调用
__getattribute__(self, name):访问任意属性时调用(慎用,容易递归)
__setattr__(self, name, value):设置属性时调用
__delattr__(self, name):删除属性时调用
7. 可调用对象
__call__(self, *args, **kwargs):让实例像函数一样被调用,如obj()
8. 上下文管理
__enter__(self):进入with语句时调用
__exit__(self, exc_type, exc_value, traceback):退出with块时调用,可用于资源清理
9. 类相关和其他
__instancecheck__(self, instance):自定义isinstance()行为
__subclasscheck__(self, subclass):自定义issubclass()行为
__bool__(self):定义对象的布尔值,返回True或False
__hash__(self):返回哈希值,用于字典键或集合成员
__dir__(self):定义dir()返回的内容
基本上就这些常见类别。实际使用中不需要全部掌握,按需选择即可。关键是理解它们如何改变对象与Python内置机制的交互方式。以上就是python魔法方法有哪几种?的详细内容,更多请关注其它相关文章!
# 不存在
# wordpress seo自定义
# 上海热处理设备网站建设
# 企业网站建设娜娜
# 北京镕立泰网站推广
# 国贸门户网站建设
# 正规网站建设怎么选择
# 上海开发网站优化
# 食品怎么网络营销推广
# 承德响应式网站建设费用
# 如何学seo技术
# 解决问题
# python
# 中文网
# 相关文章
# 按需
# 如何做
# 下划线
# 几种
# 自定义
# 递归
# 格式化输出
# ai
# 魔法方法
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
css绝对定位元素脱离父容器怎么办_确保父元素position非static
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
神庙逃亡小游戏在线玩 神庙逃亡小游戏入口
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
我的世界官方游戏入口 我的世界官网平台直达链接
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
126邮箱网页版官方入口 126邮箱账号在线登录平台
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
Golang如何使用net/url解析URL_Golang URL解析与处理方法
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
反效果?《战地6》免费试玩开启后玩家数不升反降
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
快手官方唯一登录入口 谨防山寨钓鱼网站
顺丰国际快递查询 国际件官方查询入口
2026年CSGO开箱网站推荐 CSGO开箱平台精选
2026春节假期时间安排 2026春节假日查询
将HTML动态表格多行数据保存到Google Sheet的教程
蛙漫2台版漫画地址 Manwa2正版网页版链接
c++ dfs和bfs代码 c++深度广度优先搜索算法
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程
J*a里如何使用forEach遍历Map_Map遍历方法说明
微博网页版首页入口 微博电脑端官网登录链接
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
J*aScript中正确使用querySelectorAll与复杂CSS选择器
Log4j Console Appender性能瓶颈与高并发优化策略
Flexbox布局实践:实现粘性导航栏与底部固定页脚
铁路12306官网网页端快速入口 铁路12306官方首页登录教程
Yandex浏览器官方网页版入口 Yandex浏览器最新版官网
我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
AO3官网镜像链接 Archive of Our Own同人文在线浏览
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
顺丰快递查询系统 官方正版查询入口
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池
狙击外星人小游戏开始_狙击外星人小游戏立即开始
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接


2025-11-18
浏览次数:次
返回列表