Python 中的魔术方法(也称为特殊方法或双重下划线方法)是那些其名称以双下划线 (__) 开头和结尾的方法。这些方法定义了类的行为,使你可以对类实例使用诸如算术运算、比较操作、上下文管理器等特性。下面是一些常见的魔术方法的例子:
对象创建与销毁
__new__(cls, ...): 控制对象的创建过程,在__init__之前被调用。__init__(self, ...): 初始化一个已经创建的对象。__del__(self): 当一个对象被删除时调用。
表示形式
__repr__(self): 返回一个“官方”的字符串表示形式,通常用来调试。__str__(self): 返回一个用户友好的字符串表示形式。
算术运算符
__add__(self, other): 定义加法运算。__sub__(self, other): 定义减法运算。__mul__(self, other): 定义乘法运算。__truediv__(self, other): 定义真除法运算。__floordiv__(self, other): 定义整数除法运算。__mod__(self, other): 定义取模运算。__pow__(self, other[, modulo]): 定义幂运算。__neg__(self): 定义负号运算。__pos__(self): 定义正号运算。__abs__(self): 定义绝对值运算。
比较运算符
__eq__(self, other): 定义等于运算。__ne__(self, other): 定义不等于运算。__lt__(self, other): 定义小于运算。__le__(self, other): 定义小于等于运算。__gt__(self, other): 定义大于运算。__ge__(self, other): 定义大于等于运算。
序列和迭代
__len__(self): 定义获取长度。__getitem__(self, key): 定义通过索引获取元素。__setitem__(self, key, value): 定义通过索引设置元素。__delitem__(self, key): 定义通过索引删除元素。__iter__(self): 返回一个迭代器对象。__next__(self): 返回迭代中的下一个项目。
上下文管理协议(即 with 语句)
__enter__(self): 进入 with 语句时调用。__exit__(self, exc_type, exc_val, exc_tb): 退出 with 语句时调用。
属性描述符
__getattr__(self, name): 获取不存在的属性时调用。__setattr__(self, name, value): 设置属性时调用。__delattr__(self, name): 删除属性时调用。
这些只是其中的一部分,实际上还有很多其他的魔术方法可以定义类的行为。使用这些方法可以使你的类更加 Pythonic,并且能够无缝地集成到 Python 语言的结构中。如果你需要了解某个特定魔术方法的具体用途或实现细节,请告诉我,我可以提供更详细的信息。