Python的富比較方法包括
__le__、__ge__
分別表示:小于等于、大于等于,對(duì)應(yīng)的操作運(yùn)算符為:“<=”、“>=”。那么是否象普通數(shù)字運(yùn)算一樣,這兩個(gè)方法之間存在互反的關(guān)系呢?
Python沒(méi)有對(duì)
__le__、__ge__
這兩個(gè)方法之間有什么強(qiáng)制關(guān)系,但建議__le__和__ge__為互反,開(kāi)發(fā)者完全可以根據(jù)業(yè)務(wù)邏輯的需要自己定義。我們來(lái)進(jìn)行分析驗(yàn)證:
- 當(dāng)自定義類(lèi)中兩個(gè)方法都定義了時(shí),“<=”、“>=”分別調(diào)用__le__和__ge__方法;
- 當(dāng)自定義類(lèi)中定義了__le__方法,未定義__ge__方法時(shí),進(jìn)行”>=”比較也是調(diào)用__le__方法,只是對(duì)調(diào)用值求反。案例:
>>> class Car():
def __init__(self,carname,oilcp100km, price):
self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
def __le__(self,other):
print("execute __le__")
return self.price<=other.price
>>>
>>> car1,car2,car3,car4 = Car('愛(ài)麗舍',8,10),Car('凱美瑞',7,27),Car('愛(ài)麗舍',8,10),Car('途觀',12,27)
>>>
>>> car1>=car2
execute __le__
False
>>> car1<=car2
execute __le__
True
>>>
- 當(dāng)自定義類(lèi)中定義了__ge__方法,未定義__le__方法時(shí),進(jìn)行”<=”比較也是調(diào)用__ge__方法,只是對(duì)調(diào)用值求反。案例:
>>> class Car():
def __init__(self,carname,oilcp100km, price):
self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
def __ge__(self,other):
print("execute __ge__")
return self.price>=other.price
>>> car1,car2,car3,car4 = Car('愛(ài)麗舍',8,10),Car('凱美瑞',7,27),Car('愛(ài)麗舍',8,10),Car('途觀',12,27)
>>> car1<=car2
execute __ge__
True
>>> car1>=car2
execute __ge__
False
>>>
通過(guò)以上案例,我們知道當(dāng)__le__、__ge__方法都定義了時(shí),“<=”、“>=”分別調(diào)用__le__和__ge__方法,當(dāng)一個(gè)定義另一個(gè)未定義時(shí),未定義的操作執(zhí)行時(shí)會(huì)調(diào)用已經(jīng)定義的方法求反。這個(gè)與__eq__和__ne__的關(guān)系還是有較大的不同,與__lt__和__gt__的關(guān)系一樣。
老猿Python,跟老猿學(xué)Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請(qǐng)大家多多支持,點(diǎn)贊、評(píng)論和加關(guān)注!謝謝!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
