Python的富比較方法

2022-03-02 18:56:32 字數 2955 閱讀 8200

python的富比較方法

"""

python的富比較方法包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__六個方法,

分別表示:小於、大於、小於等於、大於等於、等於和不等於,對應的操作運算子為:<、>、<=、>=、==和!=。那麼是否象普通數字運算一樣,

這些符號之間存在關聯關係呢?如「小於等於」是否就包含了「小於」?比較符號之間有必須的包含關係嗎?本次對富比較方法__eq__和__ne__之間的關係進行分析:

python建議__eq__和__ne__之間是非的關係(就是互斥,取反,逆運算的關係),__ne__的方法實現時就應該呼叫__eq__取反來完成,

但如果開發者不遵循該要求實際上也是可以的。

案例分析:

1、如果開發者pyhon在自定義類中實現了__eq__和__ne__這兩個方法,則「==」和「!=」的兩個物件比較分別呼叫了這兩個方法進行比較。**如下:

"""class

car():

def__init__

(self, carname, oilcp100km, price):

self.carname, self.oilcp100km, self.price =carname, oilcp100km, price

def__eq__

(self, other):

"""就是判等運算

"""print("

execute __eq__")

return self.price ==other.price

def__ne__

(self, other):

"""就是不相等判斷

"""print("

execute __ne__")

return self.price !=other.price

car1, car2, car3, car4 = car('

愛麗舍', 8, 10), car(

'凱美瑞

', 7, 27), car('

愛麗舍', 8, 10), car('

途觀', 12, 27)

cc = car1 ==car2

print

(cc)

cc1 = car1 !=car2

print

(cc1)

cc2 = car2 ==car4

print

(cc2)

"""輸出結果:

execute __eq__

false

execute __ne__

true

execute __eq__

true

""""""

2、如果開發者pyhon在自定義類中實現了__eq__方法,未實現__ne__方法,則「==」和「!=」都是__eq__方法,

呼叫的兩個物件比較都呼叫__eq__方法進行比較,不過後者是對__eq__取反。**如下:

"""print("

---------------------------")

class

car():

def__init__

(self, carname, oilcp100km, price):

self.carname, self.oilcp100km, self.price =carname, oilcp100km, price

def__eq__

(self, other):

"""就是判等運算

"""print("

execute __eq__")

return self.price ==other.price

car1, car2, car3, car4 = car('

愛麗舍', 8, 10), car(

'凱美瑞

', 7, 27), car('

愛麗舍', 8, 10), car('

途觀', 12, 27)

cc = car1 ==car2

print

(cc)

cc1 = car1 != car4 #

不過後者是對__eq__取反,實現的效果和__ne__是一樣的(ne:就是 not equal 的縮寫)

print

(cc1)

"""3、如果開發者pyhon在自定義類中實現了__ne__方法,未實現__eq__方法,則「!=」呼叫__ne__方法,而eq則呼叫系統內建的「==」對應的方法,

老猿初步分析應該是呼叫「is」,還沒求證。**如下:

"""print("

************************")

class

car():

def__init__

(self, carname, oilcp100km, price):

self.carname, self.oilcp100km, self.price =carname, oilcp100km, price

def__ne__

(self, other):

"""僅實現了不等

"""print("

execute __ne__")

return self.price !=other.price

car1, car2, car3, car4 = car('

愛麗舍', 8, 10), car(

'凱美瑞

', 7, 27), car('

愛麗舍', 8, 10), car('

途觀', 12, 27)

cc = car1 == car3 #

判斷相等,會去呼叫系統內建的"=="對應的方法,不是判等,是判斷 id 是否一致的 is 機制

print

(cc)

cc1 = car1 != car3 #

相等成立,不等取反為false

print(cc1)

Python的富比較方法 lt gt

python的富比較方法包括 lt gt 分別表示 小於 大於,對應的操作運算子為 那麼是否象普通數字運算一樣,這兩個方法之間存在互反的關係呢?python沒有對 lt gt 這兩個方法之間有什麼強制關係,但建議 lt 和 gt 為互反,開發者完全可以根據業務邏輯的需要自己定義。我們來進行分析驗證 ...

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