亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統(tǒng) 1832 0

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

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

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

假設有一個職員Class, 我們分別創(chuàng)建了兩個對象

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


          

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

創(chuàng)建對象并查看各自的內(nèi)存地址

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


          

結果很明顯,在不同的內(nèi)存地址,這時候如果判斷 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,說明是相等的,但在計算機中的內(nèi)存地址,肯定是不一樣的。這里重載了 __eq__ 方法,當然你還可以 增加比較條件,例子中只對比了id. 用同樣的方法,還可以實現(xiàn) 兩個對象相加等操作,重載 __add__ 方法。

2.直接屬性值對比來實現(xiàn)

            
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'


          

你會發(fā)現(xiàn),這樣也是可以的,同樣也可以對比多個屬性,這里的重點是用到了python Class 的 __dict__ 系統(tǒng)內(nèi)置方法來實現(xiàn)。

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

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


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久99精品一久久久久久 | 久99频这里只精品23热 视频 | 欧美日韩免费播放一区二区 | 欧美精品日日鲁夜夜 | 在线亚洲 欧美 日本专区 | 在线看的成人性视频 | 一级欧美在线的视频 | 中国特黄特级真人毛片 | 国产香蕉尹人综合在线 | 女人一级毛片免费观看 | 亚洲一区二区三区视频 | 久久精品麻豆 | 亚洲一二区 | 国产成人久久久精品毛片 | 国产小视频精品 | 免费观看男女羞羞的视频网站 | 91成人午夜性a一级毛片 | 国产福利99| 久久色婷婷 | 亚洲成人91 | 四虎影视国产在线观看精品 | 久揄揄鲁一二三四区高清在线 | 亚洲性夜夜综合久久麻豆 | 好吊妞视频在线观看 | 亚洲欧美精品日韩欧美 | 欧美中文字幕在线视频 | 欧美成人性毛片免费版 | 日韩亚洲欧美在线观看 | 毛片免费全部免费观看 | 国产精品美女一级在线观看 | 九九精品免费 | 中文字幕中文字幕中中文 | 99在线看 | 狠狠澡夜夜澡人人爽 | 国产成人视屏 | 日韩 亚洲 中文 图片 小说 | 美女很黄很黄免费 | 2021午夜国产精品福利 | 青青青在线观看免费视频精品 | 国产无套免费网站 | 国产成人精品影院狼色在线 |