Python是面向对象的语言,一般情况下使用面向对象编程会使得开发效率更高,软件质量更好,并且代码更易于扩展,可读性和可维护性也更高。但是如果在一个较大的项目中,如果实体类非常多并且有非常复杂的属性,你就会逐渐觉得Python的类写起来是真·“累”。为什么这样说,看下下面这个Box类,属性有长(length)、宽(width)、高(hight):
class Box:
def __init__(self, length, width, hight):
self.length = length
self.width = width
self.hight = hight
这样倒没有什么问题,而且是符合Python规范的写法,初始化函数内每一个参数都需要用self.xxx = xxx进行赋值,参数少了还好,但是如果参数过多了,只是参数赋值操作都够写一会的了,如果一个项目中类也有很多,那就真的要麻木了。
而且我们知道,在Python中,想要自定义对象本身的打印输出结果的时候,需要在它的类中实现__repr__()
方法,例如:
def __repr__(self):
return '{}(length={}, width={}, hight={})'.format(
self.__class__.__name__, self.length, self.width, self.hight)
实现了__repr__()
方法,当我们打印对象本身的时候,才会输出我们自定义的字符。
box = Box(20, 15, 15)
print(box)
# 结果输出为 Box(length=20, width=15, hight=15)
但是有时会因为麻烦,我们不愿意去实现__repr__()
方法,但是不实现打印结果又不友好,就陷入了纠结之中。
如果我么想要实现对象比较,有时候需要判断2个对象是否相等或者比较大小,