print c1<=r1 为什么也可以正确执行

来源:7-5 如何让类支持比较操作

慕少0241385

2017-10-28

from functools import total_ordering

@total_ordering
class Rectangle(object):
    def __init__(self,w,h):
        self.w = w
        self.h = h
    def area(self):
        return self.w * self.h
    def __lt__(self, other):
        print('in lt')
        return self.area() < other.area()
    def __eq__(self, other):
        print('in eq')
        return self.area() == other.area()
class Circle(object):
    def __init__(self,r):
        self.r = r
    def area(self):
        return self.r**2*3.14

r1 = Rectangle(3,4)
r2 = Rectangle(5,5)
c1 = Circle(3)

print(c1<=r1)

c1<r1也可得出

in lt
False

在python3中这有什么区别么?

写回答

1回答

程序员硕

2017-10-29

 Rectangle定义了__lt__和__eq__, 自动推测出大于。 并且俩个类都有area接口。

0
0

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程