列举面向对象中带双下划线的特殊方法,如:__new__、__init__?

在Python的面向对象编程中,以双下划线开头和结尾的特殊方法被称为魔法方法(Magic Methods)或双下方法(Dunder Methods)。它们是Python的内建方法,可以改变Python对象的一些默认行为,或者让我们的对象具有和内建类型相同的行为。

以下是一些常见的带双下划线的特殊方法:

  1. 初始化方法
    • __new__(cls, ...):静态方法,用于创建并返回类的新实例。在__init__之前调用。
    • __init__(self, ...):实例初始化方法,用于设置新创建对象的初始状态。
  2. 表示方法
    • __str__(self):返回对象的字符串表示,可读性高。
    • __repr__(self):返回对象的官方字符串表示,通常可以通过该表示重新创建对象。
  3. 比较方法
    • __eq__(self, other):等于运算符==
    • __ne__(self, other):不等于运算符!=
    • __lt__(self, other):小于运算符<
    • __le__(self, other):小于等于运算符<=
    • __gt__(self, other):大于运算符>
    • __ge__(self, other):大于等于运算符>=
  4. 算术运算符方法
    • __add__(self, other):加法运算符+
    • __sub__(self, other):减法运算符-
    • __mul__(self, other):乘法运算符*
    • __truediv__(self, other):除法运算符/(Python 3中)。
    • __floordiv__(self, other):整除运算符//
    • __mod__(self, other):取模运算符%
    • __pow__(self, other):幂运算符**
  5. 赋值运算符方法
    • __iadd__(self, other):加法赋值运算符+=
    • __isub__(self, other):减法赋值运算符-=
    • __imul__(self, other):乘法赋值运算符*=
    • __itruediv__(self, other):除法赋值运算符/=(Python 3中)。
    • __ifloordiv__(self, other):整除赋值运算符//=
    • __imod__(self, other):取模赋值运算符%=
    • __ipow__(self, other):幂赋值运算符**=
  6. 类型转换方法
    • __int__(self):转换为整数。
    • __float__(self):转换为浮点数。
    • __bool__(self):转换为布尔值(Python 3中,Python 2中是__nonzero__)。
  7. 属性访问方法
    • __getattr__(self, name):访问不存在的属性时调用。
    • __setattr__(self, name, value):设定属性值时调用。
    • __delattr__(self, name):删除属性时调用。
  8. 容器方法
    • __len__(self):获取容器长度。
    • __getitem__(self, key):获取容器中指定元素。
    • __setitem__(self, key, value):设定容器中指定元素的值。
    • __delitem__(self, key):删除容器中指定元素。
    • __contains__(self, item):检查容器中是否包含指定元素(in运算符)。
  9. 调用方法
    • __call__(self, ...):允许对象像函数一样被调用。
  10. 属性描述符方法
    • __get__(self, instance, owner):获取属性值。
    • __set__(self, instance, value):设定属性值。
    • __delete__(self, instance):删除属性。
  11. 类型判断和转换
    • __instancecheck__(self, instance):检查一个对象是否是这个类的实例(通常由isinstance()调用)。
    • __subclasscheck__(self, subclass):检查一个类是否是这个类的子类(通常由issubclass()调用)。
  12. 销毁方法(不常用且不建议依赖):
    • __del__(self):对象销毁时调用。

以上只是双下划线方法的部分列表,实际上Python中还有更多的双下划线方法用于不同的目的。需要注意的是,虽然这些方法提供了很大的灵活性,但不建议滥用,因为过度使用魔法方法可能会使代码变得难以理解和维护。

发表评论

后才能评论