91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現比較類的兩個instance(對象)是否相等的方法分析

發布時間:2020-10-09 12:46:59 來源:腳本之家 閱讀:161 作者:輕舞肥羊 欄目:開發技術

本文實例講述了python實現比較類的兩個instance(對象)是否相等的方法。分享給大家供大家參考,具體如下:

對于同一個Class,可以創建不同的實例(instance), 如何比較這兩個 instance 是否相等呢?我們知道,對于計算機來說,要判斷兩個對象是否相等,就是看在內存中的地址是否同一個。如果內存地址一樣,那么肯定是相等的。這種情況通常出現在一個對象是另外一個對象的引用時出現。

但在實際的開發過程中,要比較兩個對象是否相等,并不是通過內存地址來判斷的,而是通過這兩個對象的部分屬性值,或者全部屬性值來對比判斷的。

假設有一個職員Class, 我們分別創建了兩個對象

class Staff(object):
 def __init__(self,id,name,sex):
  self.id=id
  self.name=name
  self.sex=sex

我們這樣認為,如果id 相同,則表示兩個對象相等,id姑且表示身份證編號吧,如果身份證編號相同,那么肯定是同一人,在實際的項目中會遇到這樣的情況。

創建對象并查看各自的內存地址

staff1=Staff("123456","張三","男")
staff2=Staff("123456","李四","女")
print id(staff1),id(staff2)
#12327248 12327184

結果很明顯,在不同的內存地址,這時候如果判斷 staff1==staff2 ,結果肯定是  False

如何滿足我們的需要,只要id 相同的對象,就認為是相等的對象呢,有如下幾種方法:

1.重載 Staff Class 的 __eq__ 方法

class Staff(object):
 def __init__(self,id,name,sex):
  self.id=id
  self.name=name
  self.sex=sex
 def __eq__(self,other):
  return self.id==other.id
staff1=Staff("123456","張三","男")
staff2=Staff("123456","李四","女")
print id(staff1),id(staff2)
print staff1==staff2
#True

結果返回為 true,說明是相等的,但在計算機中的內存地址,肯定是不一樣的。這里重載了__eq__方法,當然你還可以 增加比較條件,例子中只對比了id. 用同樣的方法,還可以實現 兩個對象相加等操作,重載__add__ 方法。

2.直接屬性值對比來實現

staff1=Staff("123456","張三","男")
staff2=Staff("123456","李四","女")
print id(staff1),id(staff2)
print staff1.__dict__
print staff2.__dict__
if staff1.__dict__['id']==staff2.__dict__['id']:
 print 'yes,equal'

你會發現,這樣也是可以的,同樣也可以對比多個屬性,這里的重點是用到了python Class 的 __dict__系統內置方法來實現。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴隆县| 庆阳市| 临夏县| 周至县| 丰顺县| 尚志市| 三亚市| 九龙城区| 夏邑县| 虎林市| 静宁县| 扶绥县| 宝应县| 昭苏县| 射洪县| 图们市| 米林县| 芜湖县| 司法| 临安市| 古蔺县| 游戏| 哈尔滨市| 习水县| 互助| 元阳县| 兰西县| 罗平县| 梁平县| 谷城县| 大新县| 内黄县| 沙河市| 遂昌县| 林周县| 论坛| 元谋县| 许昌市| 玛沁县| 威远县| 高淳县|