[ Python ] 常用运算符对应的魔术方法

https://www.cnblogs.com/yeungchie/

Python中的运算符丰富多样,它们可以分为多个类别,包括算术运算符、比较运算符、逻辑运算符、位运算符、身份运算符、成员运算符等。每个运算符都有其对应的魔术方法(也称为特殊方法或dunder方法,即双下划线方法),这些方法在特定情况下会被Python调用来实现运算符的行为。下面是一些常见运算符及其对应的魔术方法:

算术运算符

  • + 加法:__add__(self, other)
  • - 减法:__sub__(self, other)
  • * 乘法:__mul__(self, other)
  • / 除法(Python 3 中为真除法):__truediv__(self, other)
  • // 整除:__floordiv__(self, other)
  • % 取模:__mod__(self, other)
  • ** 幂运算:__pow__(self, other[, modulo])
  • +(一元正号):__pos__(self)
  • -(一元负号):__neg__(self)
  • ~(按位取反,不常用):__invert__(self)

比较运算符

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

逻辑运算符

Python中没有直接的魔术方法对应逻辑运算符,逻辑运算通常通过andornot关键字实现

位运算符

  • & 按位与:__and__(self, other)
  • | 按位或:__or__(self, other)
  • ^ 按位异或:__xor__(self, other)
  • << 左移:__lshift__(self, other)
  • >> 右移:__rshift__(self, other)

身份运算符

  • is 没有直接对应的魔术方法,因为这是Python解释器直接处理的。
  • is not 同上。

成员运算符

  • in 没有直接对应的魔术方法,但可以通过重写__contains__(self, item)来影响in的判断逻辑。
  • not in 间接通过__contains__方法影响。

其他特殊方法

  • +(用于字符串拼接或列表合并):根据对象类型不同,可能调用__add__或特定类型的其他方法。
  • [](索引和切片):__getitem__(self, key)__setitem__(self, key, value)__delitem__(self, key)
  • ()(调用):__call__(self[, args...])

这些魔术方法允许你在自定义类中重载运算符,从而让类实例支持这些运算符的行为。需要注意的是,实现这些方法时应遵循运算符的常规语义,以保持代码的一致性和可预测性。

posted @ 2024-06-02 23:13  YEUNGCHIE  阅读(169)  评论(0编辑  收藏  举报