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

Python的魔法方法(也叫特殊方法或双下方法)是以双下划线开头和结尾的方法,用于自定义类的行为。它们让对象支持内置操作,比如加法、字符串表示、属性访问等。下面是一些常见的魔法方法分类和用途:
__init__(self, ...):最常用的构造方法,用于初始化实例。
__new__(cls, ...):在实例创建之前调用,控制对象的生成过程,常用于单例模式或不可变类型定制。
__del__(self):析构方法,在对象被销毁前调用(不保证立即执行)。
立即学习“Python免费学习笔记(深入)”;
__str__(self):返回对象的可读字符串表示,用于print()或str()。
__repr__(self):返回更详细的字符串表示,用于调试,理想情况下应能重建对象。
__format__(self, format_spec):支持格式化输出,如f"{obj:fmt}"。
__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__(*=)等。
__eq__(self, other):等于 ==
__ne__(self, other):不等于 !=
__lt__(self, other):小于 <
__le__(self, other):小于等于 <=
__gt__(self, other):大于 >
__ge__(self, other):大于等于 >=
__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操作
__getattr__(self, name):访问不存在的属性时调用
__getattribute__(self, name):访问任意属性时调用(慎用,容易递归)
__setattr__(self, name, value):设置属性时调用
__delattr__(self, name):删除属性时调用
__call__(self, *args, **kwargs):让实例像函数一样被调用,如obj()
__enter__(self):进入with语句时调用
__exit__(self, exc_type, exc_value, traceback):退出with块时调用,可用于资源清理
__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速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号