Python的富比較方法 le ge

2021-09-25 03:09:39 字數 1573 閱讀 2941

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...