人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Python實用小知識之對象間的比較

發(fā)布日期:2021-12-25 21:42 | 文章來源:源碼之家

今天就結(jié)合日常生活的例子,給大家講講Python對象之間的比較。(內(nèi)容不多,小娃兒都能看懂)

場景

米洛今年國慶節(jié)打算給新家添置一些日用的東西,比如床、四件套等等。為此,他使用了各大電商平臺的app,但因為是新家,所以有些app還沒有錄入地址。

于是他干脆進行了一波整理,在他的收貨地址里面,找尋自己是否添加過最新的地址。

我們都知道,收貨地址最重要的就是地址+電話了,通過這個可以確定一個人。因為有些英雄美女喜歡把姓名寫成: 喵星人,吳彥祖這樣的,所以只要確保地址和電話對得上就行。

那我們就需要比較地址是否有重復的,這樣就好好管理自己的收貨地址嘛。

代碼里的收貨地址

我們定義一個Receiver類,里面有name/address/mobile3個字段:

class Receiver(object):
 def __init__(self, name, addr, mobile):
  self.name = name
  self.addr = addr
  self.mobile = mobile

if __name__ == "__main__":
 r = Receiver("小孟", "梅苑小區(qū)", 13922222222)
 r2 = Receiver("小孟貨", "梅苑小區(qū)", 13922222222)
 print(r == r2)

這樣我們的生活就映射到了代碼之中。由于我們要比較,所以我們這邊new了2個收貨地址。

我們想要的是,當addr和mobile一致的時候,我們確定這2個收貨地址相同。

來看看執(zhí)行效果:

因為r和r2是2個不同的對象,所以他們是肯定不相等的。

思考: 如果是單例模式的class,r等于r2嗎?

了解__eq__方法

我們知道,在Python里面比較數(shù)字/字符串是否相等,那2個對象是否相等。其實也是可以比較的。這一切都要歸功于__eq__這個方法。

可以看到有個向上的箭頭,這個代表子類重寫了父類的方法。我們點擊一下:

在我們比較2個對象的時候: r == r2, 實際上是執(zhí)行了這樣的方法:

不信咱們試試:

實現(xiàn)

熟悉了__eq__以后,我們問題就迎刃而解了。我們只需要在__eq__方法里面寫上對應的判斷方法即可。

class Receiver(object):
 def __init__(self, name, addr, mobile):
  self.name = name
  self.addr = addr
  self.mobile = mobile
 def __eq__(self, other):
  return self.addr == other.addr and self.mobile == other.mobile

if __name__ == "__main__":
 r = Receiver("小孟", "梅苑小區(qū)", 13922222222)
 r2 = Receiver("小孟", "梅苑小區(qū)", 13922222222)
 print(r == r2)

擴展

既然能夠比較對象是否相等,那能否比較對象大小呢?那就等大家自己探索了,關鍵字:

lt, gt, ge, le

另外,還有__str__, __repr__, __hash__等方法,大家感興趣也可以自己重寫著玩玩。

總結(jié)

到此這篇關于Python實用小知識之對象間比較的文章就介紹到這了,更多相關Python對象的比較內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部