对象也能实现类似于整型一样的大小比较,主要用于比较对象之间的大小,下面就通过重写类中的内置比较函数来实现这样的效果。
class Child:
def __init__(self, age, height):
self.age = age
self.height = height
def __eq__(self, other): # 等于
print(other)
return self.age == other.age
def __ne__(self, other): # 不等于
print('不等于')
return self.age != other.age
def __gt__(self, other): # 大于
return self.age > other.age
def __ge__(self, other): # 大于等于
return self.age >= other.age
def __lt__(self, other): # 小于
return self.age < other.age
def __le__(self, other): # 小于等于
return self.age <= other.age
创建两个对象来对比一下。
a1 = Child(22, 156)
a2 = Child(23, 164)
print(a1 == a2)
print(a1 != a2)
返回结果:
<__main__.Child object at 0x000000000232BE20>
False
不等于
True
这里要注意等于功能完善后不等于也就相应实现了,但是也可以单独去使用__ne__()去单独处理,通过比较运算符,把左边的值赋值给self,右边的赋值给other。有了>, ==, >=之后就可以通过下面的装饰器,同步实现<, !=, <=,反过来也是一样的,同时还能把>=拆分为>和=,<=拆分为<和=,反过来也能把<和=组合成<=。