Python类中的特殊方法(也称为魔术方法或双下划线方法)用于定义类的行为,可以在特定的操作或事件发生时自动调用。以下是一些常见的特殊方法:
1.对象创建和销毁
__new__(cls, ...): 创建对象时调用,返回一个新的实例。
__init__(self, ...): 对象初始化时调用,用于设置对象的初始状态。
__del__(self): 对象被销毁时调用,进行资源清理操作。
2.字符串表示和格式化
__str__(self): 将对象转换为字符串的方法,通过str(obj)或print(obj)调用。
__repr__(self): 将对象转换为供开发者阅读的字符串的方法,通过repr(obj)调用。
__format__(self, format_spec): 格式化对象的方法,通过format(obj, format_spec)调用。
3.属性访问和设置
__getattr__(self, name): 获取不存在的属性时调用。
__setattr__(self, name, value): 设置属性值时调用。
__delattr__(self, name): 删除属性时调用。
__getattribute__(self, name): 获取属性时调用,无论属性是否存在。
4.容器类型操作
__len__(self): 返回对象的长度,通过len(obj)调用。
__getitem__(self, key): 获取对象的索引值或键值对应的值,通过obj[key]调用。
__setitem__(self, key, value): 设置对象的索引值或键值对应的值,通过obj[key] = value调用。
__delitem__(self, key): 删除对象的索引值或键值对应的值,通过del obj[key]调用。
__iter__(self): 返回一个迭代器对象,通过iter(obj)调用。
__next__(self): 在迭代器中返回下一个元素,通过next(obj)调用。
__contains__(self, item): 检查对象是否包含某个元素,通过item in obj调用。
5.函数调用和可调用对象
__call__(self, ...): 将对象作为函数调用,通过obj()调用。
6.比较和排序
__eq__(self, other): 比较对象是否相等,通过obj == other调用。
__ne__(self, other): 比较对象是否不相等,通过obj != other调用。
__lt__(self, other): 比较对象是否小于,通过obj < other调用。
__gt__(self, other): 比较对象是否大于,通过obj > other调用。
__le__(self, other): 比较对象是否小于等于,通过obj <= other调用。
__ge__(self, other): 比较对象是否大于等于,通过obj >= other调用。
7.数值运算
__add__(self, other): 加法运算,通过obj + other调用。
__sub__(self, other): 减法运算,通过obj - other调用。
__mul__(self, other): 乘法运算,通过obj * other调用。
__truediv__(self, other): 真除法运算,通过obj / other调用。
__floordiv__(self, other): 整除法运算,通过obj // other调用。
__mod__(self, other): 取模运算,通过obj % other调用。
__pow__(self, other): 幂运算,通过obj ** other调用。
8.位运算
__and__(self, other): 位与运算,通过obj & other调用。
__or__(self, other): 位或运算,通过obj | other调用。
__xor__(self, other): 位由于回答的内容过长,无法完整列出所有的特殊方法。