Python中__str__()的妙用
前言
這里是Python小技巧的系列文章。這是第三篇,
object.__str__(self)
方法的妙用。
書接上回,這次還是介紹Python類的內(nèi)置方法,__str__()
據(jù)官方文檔的介紹,在使用 str(object) 、format() 和 print()
的時候會調(diào)用__str__()
方法,該方法會將實(shí)例轉(zhuǎn)換為字符串,返回值為 字符串 對象。
如果__str__()
沒有被定義,就會調(diào)用 object.__repr__()
。
實(shí)現(xiàn) str 方法來定制一個類的實(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__()
,基本用不上。建議查看官方文檔,粗略了解即可。
先來看一組簡單的代碼(這個類沒有實(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)存地址,如下圖所示(不夸張地說,這個類實(shí)例的打印可以說是毫無用處?。?!
剖析
在代碼復(fù)雜的情況下,再打印默認(rèn)的類實(shí)例,那就顯得太雞肋了。
這個時候我們就需要重寫 __str__()
方法了,使得它更加人性化。
再來看一組復(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í)例對比如下圖所示:
孰優(yōu)孰劣一目了然
后話
本次介紹及重寫了 __str__()
,在重寫之后,可以更為方便且準(zhǔn)確的描述信息類實(shí)例的信息,這對于我們的編程工作是有幫助的。更多相關(guān)Python __str__()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch模型訓(xùn)練的時候GPU使用率不高的問題
這篇文章主要介紹了pytorch模型訓(xùn)練的時候GPU使用率不高的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09python實(shí)現(xiàn)實(shí)時監(jiān)控文件的方法
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)實(shí)時監(jiān)控文件的3種方法,感興趣的小伙伴們可以參考一下2016-08-08Appium自動化測試實(shí)現(xiàn)H5頁面元素定位
本文主要介紹了Appium自動化測試實(shí)現(xiàn)H5頁面元素定位,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02在tensorflow以及keras安裝目錄查詢操作(windows下)
這篇文章主要介紹了在tensorflow以及keras安裝目錄查詢操作(windows下),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python序列化與數(shù)據(jù)持久化實(shí)例詳解
這篇文章主要介紹了python序列化與數(shù)據(jù)持久化,結(jié)合實(shí)例形式詳細(xì)分析了Python序列化與數(shù)據(jù)持久化相關(guān)原理、實(shí)現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2019-12-12Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式
這篇文章主要介紹了Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式,然后介紹了另外一個相關(guān)實(shí)例,具體內(nèi)容請參閱正文,需要的朋友可以參考下。2017-11-11