python符号重载

在 Python 里,符号重载能够借助魔术方法来实现。魔术方法是指那些名称以双下划线开头和结尾的特殊方法。下面为你列举一些和符号重载相关的魔术方法及其代表的含义:

算术运算符重载

  • __add__(self, other):实现加法运算 +,例如 a + b 会调用 a.__add__(b)
  • __sub__(self, other):实现减法运算 -
  • __mul__(self, other):实现乘法运算 *
  • __truediv__(self, other):实现真除法运算 /
  • __floordiv__(self, other):实现整除运算 //
  • __mod__(self, other):实现取模运算 %
  • __pow__(self, other):实现幂运算 **

比较运算符重载

  • __eq__(self, other):实现相等比较 ==
  • __ne__(self, other):实现不相等比较 !=
  • __lt__(self, other):实现小于比较 <
  • __le__(self, other):实现小于等于比较 <=
  • __gt__(self, other):实现大于比较 >
  • __ge__(self, other):实现大于等于比较 >=

赋值运算符重载

  • __iadd__(self, other):实现就地加法运算 +=
  • __isub__(self, other):实现就地减法运算 -=
  • __imul__(self, other):实现就地乘法运算 *=
  • __itruediv__(self, other):实现就地真除法运算 /=
  • __ifloordiv__(self, other):实现就地整除运算 //=
  • __imod__(self, other):实现就地取模运算 %=
  • __ipow__(self, other):实现就地幂运算 **=

其他运算符重载

  • __neg__(self):实现一元负号运算 -obj
  • __pos__(self):实现一元正号运算 +obj
  • __abs__(self):实现绝对值运算 abs(obj)
  • __len__(self):实现长度运算 len(obj)
  • __getitem__(self, key):实现索引访问 obj[key]
  • __setitem__(self, key, value):实现索引赋值 obj[key] = value
  • __delitem__(self, key):实现索引删除 del obj[key]

以下是一个简单的示例代码,展示了如何使用 __add__ 方法重载加法运算符:

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
    def __str__(self):
        return f"Vector({self.x}, {self.y})"

v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2
print(v3)

在这个示例中,Vector 类重载了 __add__ 方法,使得两个 Vector 对象可以使用 + 运算符进行相加。

使用 Hugo 构建
主题 StackJimmy 设计