Python的魔术方法
魔术方法
在 Python 中,魔术方法(也称为特殊方法或杜撰方法)是一组预定义的方法名,它们以双下划线(__
)开头和结尾。这些方法提供了对Python内置操作符和行为的定制能力。以下是一些常见的魔术方法及其用途:
1、对象创建和销毁
__new__(cls, ...)
:控制对象的创建过程,返回新创建的对象实例__init__(slef, ...)
:初始化对象的属性,通常在创建对象后立即调用__del__(self, ...)
:对象销毁时调用,可以用来释放资源,但不建议依赖它来释放资源,因为它不总是被调用。
2、对象表示
__repr__(self)
:返回对象的官方字符串表示形式,主要用于调试和开发__str__(self)
:返回对象的可读字符串表示形式,主要用于输出给用户
3、数值运算
__add__(self, other)
:实现加法操作+
__sub__(self, other)
:实现减法操作-
__mul__(self, other)
:实现乘法操作*
__truediv__(self, other)
:实现真除法操作/
__floordiv__(self, other)
:实现整数除法操作//
__pow__(self, power[, modulo])
:实现幂运算操作__neg__(self)
:实现负号-
__pos__(self)
:实现正号+
__abs__(self)
:实现绝对值abs()
4、比较运算
__eq__(self, other)
:实现等于操作==
__ne__(self, other)
:实现不等于操作!=
__lt__(self, other)
:实现小于操作<
__le__(self, other)
:实现小于等于操作<=
__gt__(self, other)
:实现大于操作>
__ge__(self, other)
:实现大于等于操作>=
5、属性访问
__getattr__(self, name)
:当尝试获取不存在的属性时被调用__setattr__(self, name, value)
:当属性被设置时调用__delattr__(self, name)
:当属性被删除时调用
6、序列和迭代
__len__(self)
:返回序列的长度__getitem(self, key)
:获取序列中的元素__setitem__(self, key, value)
:设置序列中的元素__delitem__(self, key)
:删除序列中的元素__iter__(self)
:返回迭代器对象__next__(self)
:迭代器对象的下一个元素
7、上下文管理器
__enter__(self)
:上下文管理器的开始,返回一个对象__exit__(self, exc_type, exc_val, exc_tb)
:上下文管理器的结束,处理资源的清理