python进阶--魔术方法之比较操作符

操作符

在自动类的时候,如果我们想实现实例的比较应该怎么做呢?其实python给我们提供了相应的魔术方法,比如在自定义类中定义 __eq__方法就可以利用==判断两个实例是否相等

if instanceA == instanceB:
    # do something

而不是利用equals()方法来判断,因为使用它比较繁琐和冗余,下面我们介绍一下python中的比较操作符

1 、__cmp__(self, other)

利用__cmp__ 可以定义所有比较操作符的行为(<,==,!=,等等),__cmp__ 应该在 self < other 时返回一个负整数,在 self == other 时返回0,在 self > other 时返回正整数。虽然__cmp__ 可以定义所有比较操作符的行为,但是可以根据自己的需求定义比较行为,不需要全部定义,例子如下

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __cmp__(self, other):
        if self.age < other.age:
            return -1
        elif self.age == other.age:
            return 0
        else:
            return 1

person1 = Person("A"

你可能感兴趣的:(python,魔术方法)