python魔法方法有哪几种?

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-11-18 22:16:02
原创
631人浏览过
Python魔法方法通过双下划线命名实现类的特殊行为定制,如__init__初始化实例,__str__和__repr__定义字符串表示,__add__等支持数值运算,__len__、__getitem__实现容器功能,__getattr__控制属性访问,__call__使对象可调用,__enter__和__exit__管理上下文,按需使用可自定义对象与内置机制的交互。

python魔法方法有哪几种?

Python的魔法方法(也叫特殊方法或双下方法)是以双下划线开头和结尾的方法,用于自定义类的行为。它们让对象支持内置操作,比如加法、字符串表示、属性访问等。下面是一些常见的魔法方法分类和用途:

1. 对象初始化与创建

__init__(self, ...):最常用的构造方法,用于初始化实例。

__new__(cls, ...):在实例创建之前调用,控制对象的生成过程,常用于单例模式或不可变类型定制。

__del__(self):析构方法,在对象被销毁前调用(不保证立即执行)。

立即学习Python免费学习笔记(深入)”;

2. 字符串和表示

__str__(self):返回对象的可读字符串表示,用于print()str()

__repr__(self):返回更详细的字符串表示,用于调试,理想情况下应能重建对象。

__format__(self, format_spec):支持格式化输出,如f"{obj:fmt}"

3. 数值运算

__add__(self, 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):小于等于 <=

降重鸟
降重鸟

要想效果好,就用降重鸟。AI改写智能降低AIGC率和重复率。

降重鸟 308
查看详情 降重鸟

__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魔法方法有哪几种?的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号