pythonfunctools。totalordering用法
目的
让类支持比较操作。
介绍
在不使用functools.total_ordering时,需要支持__lt__、__le__、__gt__、__ge__、__eq__、__ne__这些方法,才能保证类具有常用的比较操作。
通过查看functools.total_ordering源码发现,如果是实现了__lt__,那么程序会自动帮你实现了__gt__, __ge__,__lt__函数。
源码如下_convert = { "__lt__": [("__gt__", _gt_from_lt), ("__le__", _le_from_lt), ("__ge__", _ge_from_lt)], "__le__": [("__ge__", _ge_from_le), ("__lt__", _lt_from_le), ("__gt__", _gt_from_le)], "__gt__": [("__lt__", _lt_from_gt), ("__ge__", _ge_from_gt), ("__le__", _le_from_gt)], "__ge__": [("__le__", _le_from_ge), ("__gt__", _gt_from_ge), ("__lt__", _lt_from_ge)] }
用法
不使用functools.total_orderingclass Circle(object): def __init__(self, radio): self.radio = radio @property def area(self): import math return math.pi * (self.radio * self.radio) def __lt__(self, circle): return self.area < circle.area def __le__(self, circle): return self.area <= circle.area def __gt__(self, circle): return self.area > circle.area def __ge__(self, circle): return self.area >= circle.area def __eq__(self, circle): return self.area == circle.area def __ne__(self, circle): return self.area != circle.area c1 = Circle(10) c2 = Circle(20) print(c1 == c2) print(c1 != c2) print(c1 >= c2) print(c1 <= c2) print(c1 > c2) print(c1 < c2) #-------- output -------- # False # True # False # True # False # True
使用functools.total_orderingfrom functools import total_ordering @total_ordering class Circle(object): def __init__(self, radio): self.radio = radio @property def area(self): import math return math.pi * (self.radio * self.radio) def __lt__(self, circle): return self.area < circle.area def __eq__(self, circle): return self.area == circle.area def __ne__(self, circle): return self.area != circle.area c1 = Circle(10) c2 = Circle(20) print(c1 == c2) print(c1 != c2) print(c1 >= c2) print(c1 <= c2) print(c1 > c2) print(c1 < c2) #-------- output -------- # False # True # False # True # False # True
十一大放假比亚迪唐邀您试乘试驾汽车报价早知道比亚迪益丰祥泰店,唐限时特惠大酬宾,09。2309。23购车优惠1。81,有购车意向的朋友不妨亲自去试驾一下,店铺地址内蒙古自治区呼伦贝尔市鄂温克族自治旗巴彦托海镇南
南屯比亚迪4S店十一大让利,新能源等您试驾2003年开始研发,2008年正式上市的混合动力车型比亚迪F3DM,是中国品牌首款量产插电式混合动力汽车。这款具有里程碑式意义的车型奠定了比亚迪在中国新能源汽车市场中的开拓者和引领
新能源秦PlusDmi持续增长18月新能源车零售147。9万辆,同比增长202。1。与传统燃油车走势形成强烈差异化的特征,实现对燃油车市场的替代效应,并拉动车市向新能源化转型的步伐。主流合资品牌中的南北大众的新
呼伦贝尔宋MAX让利促销,直降4。22,欢迎垂询本周宋MAX最新报价比亚迪益丰祥泰店09。3009。30限时促销,直降0。4万元,如此优惠的降幅,大家可千万不要错过,店铺地址内蒙古自治区呼伦贝尔市鄂温克族自治旗巴彦托海镇南工业园
出租车首选比亚迪F3超高保值率近年来,国内的经济增长迅速,国内的汽车保有量蹭蹭的上涨,虽然说目前市场开始疲软,但是国人对于汽车的热情依旧是高涨,不少的老百姓对于豪车以及新车型都保持着高度的关注,当然也时刻关注着
呼伦贝尔宋MAX让利促销,降价4。22,欢迎垂询手握购车款犹豫不决的你是不是还在为买车而观望,当前比亚迪益丰祥泰店宋MAX直降0。4万元颜色可选,现车充足,优惠时间10。0110。01,犹豫不决的朋友不妨到店亲身试驾一下,店铺地
呼伦贝尔宋Pro购车优惠10。78欢迎试乘试驾忙碌的工作,使您倍加疲劳,是时候奖励自己一下了,比亚迪益丰祥泰店回馈客户大放价,10。0110。01,宋Pro最高优惠1。0万元,奖励奋斗的自己,幸福有你更有礼促销时间2021年1
比亚迪F3出租车的首选车系近年来,国内的经济增长迅速,国内的汽车保有量蹭蹭的上涨,虽然说目前市场开始疲软,但是国人对于汽车的热情依旧是高涨,不少的老百姓对于豪车以及新车型都保持着高度的关注,当然也时刻关注着
比亚迪将有450台比亚迪唐EV车型在广州港集结,启程前往挪威日前,我们从比亚迪官方了解到,将有450台比亚迪唐(参数询价)EV车型在广州港集结,启程前往挪威。至此,比亚迪已累计向挪威发运超1000台唐EV。今年5月,比亚迪对外宣布,将挪威作
幸福有礼,呼伦贝尔宋MAX限时特惠4。22心心念念的宋MAX,等了这么久终于有优惠了,小编打听到比亚迪益丰祥泰店即日起到10月12日直降0。4万元,这么好的机会朋友们是不是也和小编一样迫不及待的想到店去感受一下呢促销时间2
比亚迪新能源汽车的领导者比亚迪全新DMi平台打造,其中骁云插混专用1。5L高效发动机将会率先搭载在两辆车型上。比亚迪秦PLUS是比亚迪最新的越级紧凑型轿车产品,将于接下来的广州车展首发。从最新的手绘图来看