Python中__str__()的妙用
前言
這里是Python小技巧的系列文章。這是第三篇,
object.__str__(self)
方法的妙用。
書接上回,這次還是介紹Python類的內(nèi)置方法,__str__()
據(jù)官方文檔的介紹,在使用 str(object) 、format() 和 print()
的時候會調(diào)用__str__()
方法,該方法會將實例轉(zhuǎn)換為字符串,返回值為 字符串 對象。
如果__str__()
沒有被定義,就會調(diào)用 object.__repr__()
。
實現(xiàn) str 方法來定制一個類的實例的字符串表示。
知識點????
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__()
,基本用不上。建議查看官方文檔,粗略了解即可。
先來看一組簡單的代碼(這個類沒有實現(xiàn)任何功能
"""demo.py""" class Nothing: ... if __name__ == "__main__": print(Nothing()) # <__main__.Nothing object at 0x000002C2CFD06650> 0x2c2cfd06650
默認的打印結(jié)果是當前類的實例的名稱和內(nèi)存地址,如下圖所示(不夸張地說,這個類實例的打印可以說是毫無用處?。?!
剖析
在代碼復雜的情況下,再打印默認的類實例,那就顯得太雞肋了。
這個時候我們就需要重寫 __str__()
方法了,使得它更加人性化。
再來看一組復雜點的代碼
"""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__()
后與 默認打印的類實例對比如下圖所示:
孰優(yōu)孰劣一目了然
后話
本次介紹及重寫了 __str__()
,在重寫之后,可以更為方便且準確的描述信息類實例的信息,這對于我們的編程工作是有幫助的。更多相關(guān)Python __str__()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在tensorflow以及keras安裝目錄查詢操作(windows下)
這篇文章主要介紹了在tensorflow以及keras安裝目錄查詢操作(windows下),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運算式
這篇文章主要介紹了Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運算式,然后介紹了另外一個相關(guān)實例,具體內(nèi)容請參閱正文,需要的朋友可以參考下。2017-11-11