python的富比較方法包括__lt__、__gt__
分別表示:小於、大於,對應的操作運算子為:「<」、「>」。那麼是否象普通數字運算一樣,這兩個方法之間存在互反的關係呢?
python沒有對__lt__、__gt__這兩個方法之間有什麼強制關係,但建議__lt__和__gt__為互反,開發者完全可以根據業務邏輯的需要自己定義。我們來進行分析驗證:
當自定義類中兩個方法都定義了時,「<」、「>」分別呼叫__lt__和__gt__方法;
當自定義類中定義了__lt__方法,未定義__gt__方法時,進行」>」比較也是呼叫__lt__方法,只是對呼叫值求反。案例:
>>> class car():
def __init__(self,carname,oilcp100km, price):
self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
def __lt__(self,other):
print("execute __lt__")
return self.price>>
>>> car1,car2,car3,car4 = car('愛麗舍',8,10),car('凱美瑞',7,27),car('愛麗舍',8,10),car('途觀',12,27)
>>>
>>> car1>car2
execute __lt__
false
>>> car1>>
當自定義類中定義了__gt__方法,未定義__lt__方法時,進行」<」比較也是呼叫__gt__方法,只是對呼叫值求反。案例:
>>> class car():
def __init__(self,carname,oilcp100km, price):
self.carname,self.oilcp100km,self.price = carname,oilcp100km, price
def __gt__(self,other):
print("execute __gt__")
return self.price>other.price
>>> car1,car2,car3,car4 = car('愛麗舍',8,10),car('凱美瑞',7,27),car('愛麗舍',8,10),car('途觀',12,27)
>>> car1>> car1>car2
execute __gt__
false
>>>
通過以上案例,我們知道當__lt__、__gt__方法都定義了時,「<」、「>」分別呼叫__lt__和__gt__方法,當乙個定義另乙個未定義時,未定義的操作執行時會呼叫已經定義的方法求反。這個與__eq__和__ne__的關係還是有較大的不同。 Python的富比較方法
python的富比較方法 python的富比較方法包括 lt gt le ge eq 和 ne 六個方法,分別表示 小於 大於 小於等於 大於等於 等於和不等於,對應的操作運算子為 和 那麼是否象普通數字運算一樣,這些符號之間存在關聯關係呢?如 小於等於 是否就包含了 小於 比較符號之間有必須的包含...
Python的富比較方法 le ge
python的富比較方法包括 le ge 分別表示 小於等於 大於等於,對應的操作運算子為 那麼是否象普通數字運算一樣,這兩個方法之間存在互反的關係呢?python沒有對 le ge 這兩個方法之間有什麼強制關係,但建議 le 和 ge 為互反,開發者完全可以根據業務邏輯的需要自己定義。我們來進行分...
python3的富比較方法
突然,在想為什麼兩個物件可以比較大小呢?比如類的兩個例項,這就不得不說python3中的富比較方法了。拿python3中的functools中的cmp to key函式作為例子。下面是該函式的源 def cmp to key mycmp convert a cmp function into a k...