Python的富比較方法 lt gt

2021-09-25 03:09:39 字數 1405 閱讀 1426

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