python 魔术方法备忘录 网上收集了一些,列出了比较常用的,特别是第一张。
Python中的魔术方法(Magic Methods),也被称为特殊方法(Special Methods)或双下划线方法(Dunder Methods),是以双下划线开头和结尾的方法。这些方法让我们能够实现许多特殊的操作,例如算术运算、字符串表示、对象比较等。以下是一些常见的Python魔术方法及其用途:
1. 初始化和表示
__init__(self, ...)
:对象初始化方法(构造函数),在创建对象时调用。__del__(self)
:对象销毁方法(析构函数),在对象被删除时调用。__repr__(self)
:返回对象的官方字符串表示,通常可以通过eval
函数重新创建该对象。__str__(self)
:返回对象的非正式字符串表示,通常用于打印对象。
2. 容器和迭代
__len__(self)
:返回对象的长度,适用于内置函数len()
。__getitem__(self, key)
:获取指定键的值,用于索引操作。__setitem__(self, key, value)
:设置指定键的值。__delitem__(self, key)
:删除指定键的值。__iter__(self)
:返回迭代器对象,定义对象的迭代行为。__next__(self)
:返回迭代器的下一个值。
3. 算术运算
__add__(self, other)
:实现加法运算。__sub__(self, other)
:实现减法运算。__mul__(self, other)
:实现乘法运算。__truediv__(self, other)
:实现除法运算。__floordiv__(self, other)
:实现整数除法运算。__mod__(self, other)
:实现取模运算。__pow__(self, other)
:实现幂运算。
4. 反向运算
__radd__(self, other)
:实现反向加法运算。__rsub__(self, other)
:实现反向减法运算。__rmul__(self, other)
:实现反向乘法运算。__rtruediv__(self, other)
:实现反向除法运算。__rfloordiv__(self, other)
:实现反向整数除法运算。__rmod__(self, other)
:实现反向取模运算。__rpow__(self, other)
:实现反向幂运算。
5. 比较运算
__eq__(self, other)
:实现等于运算。__ne__(self, other)
:实现不等于运算。__lt__(self, other)
:实现小于运算。__le__(self, other)
:实现小于等于运算。__gt__(self, other)
:实现大于运算。__ge__(self, other)
:实现大于等于运算。
6. 类型转换
__int__(self)
:将对象转换为整数。__float__(self)
:将对象转换为浮点数。__complex__(self)
:将对象转换为复数。__bool__(self)
:将对象转换为布尔值。__index__(self)
:实现整数类型转换,适用于切片操作。
7. 属性访问
__getattr__(self, name)
:在属性不存在时调用。__getattribute__(self, name)
:访问任意属性时调用。__setattr__(self, name, value)
:设置任意属性时调用。__delattr__(self, name)
:删除任意属性时调用。
8. 上下文管理
__enter__(self)
:进入上下文管理器时调用。__exit__(self, exc_type, exc_value, traceback)
:退出上下文管理器时调用。
9. 调用对象
__call__(self, ...)
:使对象可以像函数一样被调用。
这些魔术方法可以让我们自定义对象的行为,使其更加符合我们需要的操作方式。通过重载这些方法,我们可以让对象支持各种操作符、内置函数和特定行为。