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