Python操作符重载方法

70 阅读1分钟

操作符重载是一种高级技术,我们可以用它来使类具有可比性,并使它们与 Python 操作符一起工作。

让我们来看看一个狗类。

class Dog:
    # the Dog class
    def __init__(self, name, age):
        self.name = name
        self.age = age

让我们创建2个狗对象。

roger = Dog('Roger', 8)
syd = Dog('Syd', 7)

我们可以使用运算符重载来添加一种方法来比较这两个对象,基于age 属性。

class Dog:
    # the Dog class
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __gt__(self, other):
        return True if self.age > other.age else False

现在,如果你尝试运行print(roger > syd) ,你会得到结果True

用我们定义__gt__() (意味着大于)的同样方法,我们可以定义以下方法。

  • __eq__() 来检查是否相等
  • __lt__() 检查一个对象是否应该被认为比另一个对象低,使用 操作符<
  • __le__() 对于较低或相等 ( )<=
  • __ge__() 大于或等于 ( )>=
  • __ne__() 不等于 ( )!=

然后,你有方法与算术运算相互配合。

  • __add__() 响应 操作符+
  • __sub__() 响应 操作符
  • __mul__() 响应 操作符*
  • __truediv__() 响应 操作符/
  • __floordiv__() 响应 操作符//
  • __mod__() 响应 操作员%
  • __pow__() 响应 操作员**
  • __rshift__() 响应 操作员>>
  • __lshift__() 响应 操作员<<
  • __and__() 响应 操作员&
  • __or__() 响应 操作员|
  • __xor__() 响应 操作符^

还有一些方法可以与其他运算符一起工作,但你已经知道了。