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

python實(shí)現(xiàn)比較類(lèi)的兩個(gè)instance(對(duì)象)是否相等的方法分析

系統(tǒng) 2038 0

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

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

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

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

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


          

我們這樣認(rèn)為,如果id 相同,則表示兩個(gè)對(duì)象相等,id姑且表示身份證編號(hào)吧,如果身份證編號(hào)相同,那么肯定是同一人,在實(shí)際的項(xiàng)目中會(huì)遇到這樣的情況。

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

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


          

結(jié)果很明顯,在不同的內(nèi)存地址,這時(shí)候如果判斷 staff1==staff2 ,結(jié)果肯定是? False

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

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


          

結(jié)果返回為 true,說(shuō)明是相等的,但在計(jì)算機(jī)中的內(nèi)存地址,肯定是不一樣的。這里重載了 __eq__ 方法,當(dāng)然你還可以 增加比較條件,例子中只對(duì)比了id. 用同樣的方法,還可以實(shí)現(xiàn) 兩個(gè)對(duì)象相加等操作,重載 __add__ 方法。

2.直接屬性值對(duì)比來(lái)實(shí)現(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'


          

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

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久99热精品免费观看无卡顿 | 国内精品久久久久影院中国 | 伊人99综合| 久久国产精品最新一区 | 欧美综合图区亚洲综合图区 | 中文字幕亚洲一区 | 99精品网站| 美女视频91| 尹人成人 | 亚洲在线视频 | 久久久噜久噜久久gif动图 | a毛片在线观看 | 欧美成人免费全部观看天天性色 | 亚洲第五色综合网 | 国产第一区二区三区在线观看 | 国产青草亚洲香蕉精品久久 | 色综合久久天天综合绕观看 | 男人天堂a在线 | 91手机看片国产永久免费 | 亚洲12色吧 | 国产精品日韩一区二区三区 | 九九热视频精品 | 欧美日韩亚 | 日本不卡二区 | 日韩精品一区二区三区国语自制 | 日韩欧美在线视频 | 青青青国产在线视频 | 久免费视频 | 天堂伊人网 | 久久综合精品视频 | 久久久精品在观看999 | 久热精品香蕉在线视频 | 国产精品日本一区二区在线播放 | 久久伊人色综合 | 5060一级毛片 | 成 人 黄 色视频免费播放 | 高清二区 | 四虎影视永久地址www成人 | 久久精品视频免费在线观看 | 国产在线91区精品 | 欧美最猛性xxxxx短视频 |