首页 > 代码库 > 实现类的比较操作
实现类的比较操作
类之间的实例可以用<,<=,>,>=,==,!=的运算符进行比较。可以对比较运算符重载,实现__lt__,__le,__gt__,__ge__,__eq__,__ne__这些方式。全部使用以上方法,会很复杂和多余。这里使用了functools库中的total_ordering装饰器简化代码。例如下:代码是实现了矩形与圆形面积的比较
from abc import abstractmethod from functools import total_ordering from math import pi @total_ordering class Shape(object): @abstractmethod def area(self): #抽象方法 pass def __lt__(self, other): print ‘in__lt__‘ if not isinstance(other, Shape): raise TypeError(‘other is not Shape‘) return self.area() < other.area() def __eq__(self, other): print ‘in__eq__‘ if not isinstance(other, Shape): raise TypeError(‘other is not Shape‘) return self.area() == other.area() ‘‘‘矩形面积‘‘‘ class Rectangle(Shape): def __init__(self, w, h): self.w = w self.h = h def area(self): return self.w * self.h ‘‘‘圆形面积‘‘‘ class Cirle(Shape): def __init__(self, r): self.r = r def area(self): return self.r ** 2 * pi r = Rectangle(4, 5) c = Cirle(2) ‘‘‘对矩形面积与圆形面积的比较‘‘‘ print r < c print ‘-‘*20 print r <= c print ‘-‘*20 print r == c print ‘-‘*20 print r >= c print ‘-‘*20 print r > c
运行结果:
实现类的比较操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。