Python面向?qū)ο缶幊蘲epr方法示例詳解
為什么要講 __repr__
在 Python 中,直接 print 一個實例對象,默認(rèn)是輸出這個對象由哪個類創(chuàng)建的對象,以及在內(nèi)存中的地址(十六進(jìn)制表示)
假設(shè)在開發(fā)調(diào)試過程中,希望使用 print 實例對象時,輸出自定義內(nèi)容,就可以用 __repr__ 方法了
或者通過 repr() 調(diào)用對象也會返回 __repr__ 方法返回的值
是不是似曾相識....沒錯..和 __str__ 一樣的感覺 代碼栗子
class A: pass def __repr__(self): a = A() print(a) print(repr(a)) print(str(a)) # 輸出結(jié)果 <__main__.A object at 0x10e6dbcd0> <__main__.A object at 0x10e6dbcd0> <__main__.A object at 0x10e6dbcd0>
默認(rèn)情況下,__repr__() 會返回和實例對象<類名 object at 內(nèi)存地址>有關(guān)的信息
重寫 __repr__ 方法
class PoloBlog: def __init__(self): self.name = "小菠蘿" self.add = "https://www.cnblogs.com/poloyy/" def __repr__(self): return "test[name=" + self.name + ",add=" + self.add + "]" blog = PoloBlog() print(blog) print(str(blog)) print(repr(blog)) # 輸出結(jié)果 test[name=小菠蘿,add=https://www.cnblogs.com/poloyy/] test[name=小菠蘿,add=https://www.cnblogs.com/poloyy/] test[name=小菠蘿,add=https://www.cnblogs.com/poloyy/]
只重寫 __repr__ 方法,使用 str() 的時候也會生效哦
class PoloBlog: def __init__(self): self.name = "小菠蘿" self.add = "https://www.cnblogs.com/poloyy/" def __str__(self): return "test[name=" + self.name + ",add=" + self.add + "]" blog = PoloBlog() print(blog) print(str(blog)) print(repr(blog)) # 輸出結(jié)果 test[name=小菠蘿,add=https://www.cnblogs.com/poloyy/] test[name=小菠蘿,add=https://www.cnblogs.com/poloyy/] <__main__.PoloBlog object at 0x10e2749a0>
只重寫 __str__ 方法的話,使用 repr() 不會生效的哦!
str() 和 repr() 的區(qū)別
https://www.jb51.net/article/64333.htm
以上就是Python面向?qū)ο缶幊蘲epr方法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python面向?qū)ο缶幊蘲epr的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信