Python中__str__()的妙用
前言
這里是Python小技巧的系列文章。這是第三篇,
object.__str__(self)方法的妙用。
書接上回,這次還是介紹Python類的內(nèi)置方法,__str__()
據(jù)官方文檔的介紹,在使用 str(object) 、format() 和 print() 的時(shí)候會(huì)調(diào)用__str__() 方法,該方法會(huì)將實(shí)例轉(zhuǎn)換為字符串,返回值為 字符串 對(duì)象。
如果__str__()沒(méi)有被定義,就會(huì)調(diào)用 object.__repr__()。
實(shí)現(xiàn) str 方法來(lái)定制一個(gè)類的實(shí)例的字符串表示。
知識(shí)點(diǎn)????
object.__str__(self):https://docs.python.org/zh-cn/3.8/reference/datamodel.html?object.reprobject.__repr__(self):https://docs.python.org/zh-cn/3/reference/datamodel.html?object.repr
關(guān)于__repr__(),基本用不上。建議查看官方文檔,粗略了解即可。
先來(lái)看一組簡(jiǎn)單的代碼(這個(gè)類沒(méi)有實(shí)現(xiàn)任何功能
"""demo.py"""
class Nothing:
...
if __name__ == "__main__":
print(Nothing()) # <__main__.Nothing object at 0x000002C2CFD06650> 0x2c2cfd06650
默認(rèn)的打印結(jié)果是當(dāng)前類的實(shí)例的名稱和內(nèi)存地址,如下圖所示(不夸張地說(shuō),這個(gè)類實(shí)例的打印可以說(shuō)是毫無(wú)用處?。。?/p>

剖析
在代碼復(fù)雜的情況下,再打印默認(rèn)的類實(shí)例,那就顯得太雞肋了。
這個(gè)時(shí)候我們就需要重寫 __str__()方法了,使得它更加人性化。
再來(lái)看一組復(fù)雜點(diǎn)的代碼
"""demo.py"""
class Nothing:
name = 'frica'
age = 20
def __str__(self):
return f'Nothing(name={self.name}, age={self.age})'
if __name__ == "__main__":
print(Nothing())
代碼執(zhí)行效果如下:

重寫 __str__() 后與 默認(rèn)打印的類實(shí)例對(duì)比如下圖所示:
孰優(yōu)孰劣一目了然

后話
本次介紹及重寫了 __str__(),在重寫之后,可以更為方便且準(zhǔn)確的描述信息類實(shí)例的信息,這對(duì)于我們的編程工作是有幫助的。更多相關(guān)Python __str__()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問(wèn)題
這篇文章主要介紹了pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的方法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)實(shí)時(shí)監(jiān)控文件的3種方法,感興趣的小伙伴們可以參考一下2016-08-08
Appium自動(dòng)化測(cè)試實(shí)現(xiàn)H5頁(yè)面元素定位
本文主要介紹了Appium自動(dòng)化測(cè)試實(shí)現(xiàn)H5頁(yè)面元素定位,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
在tensorflow以及keras安裝目錄查詢操作(windows下)
這篇文章主要介紹了在tensorflow以及keras安裝目錄查詢操作(windows下),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python序列化與數(shù)據(jù)持久化實(shí)例詳解
這篇文章主要介紹了python序列化與數(shù)據(jù)持久化,結(jié)合實(shí)例形式詳細(xì)分析了Python序列化與數(shù)據(jù)持久化相關(guān)原理、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-12-12
Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式
這篇文章主要介紹了Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式,然后介紹了另外一個(gè)相關(guān)實(shí)例,具體內(nèi)容請(qǐng)參閱正文,需要的朋友可以參考下。2017-11-11

