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
默認(rèn)的打印結(jié)果是當(dāng)前類的實例的名稱和內(nèi)存地址,如下圖所示(不夸張地說,這個類實例的打印可以說是毫無用處?。?!

剖析
在代碼復(fù)雜的情況下,再打印默認(rèn)的類實例,那就顯得太雞肋了。
這個時候我們就需要重寫 __str__()方法了,使得它更加人性化。
再來看一組復(fù)雜點的代碼
"""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)打印的類實例對比如下圖所示:
孰優(yōu)孰劣一目了然

后話
本次介紹及重寫了 __str__(),在重寫之后,可以更為方便且準(zhǔn)確的描述信息類實例的信息,這對于我們的編程工作是有幫助的。更多相關(guān)Python __str__()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python數(shù)據(jù)分析工具之 matplotlib詳解
對于 Python 來說,matplotlib 是最著名的繪圖庫,它主要用于二維繪圖,當(dāng)然也可以進(jìn)行簡單的三維繪圖。這篇文章主要介紹了python數(shù)據(jù)分析工具之 matplotlib的相關(guān)知識,需要的朋友可以參考下2020-04-04
Python簡單獲取網(wǎng)卡名稱及其IP地址的方法【基于psutil模塊】
這篇文章主要介紹了Python簡單獲取網(wǎng)卡名稱及其IP地址的方法,結(jié)合實例形式分析了Python基于psutil模塊針對本機網(wǎng)卡硬件信息的讀取操作簡單使用技巧,需要的朋友可以參考下2018-05-05
Python實現(xiàn)交通數(shù)據(jù)可視化的示例代碼
本文主要分享了Python交通數(shù)據(jù)分析與可視化的實戰(zhàn)!其中主要是使用TransBigData庫快速高效地處理、分析、挖掘出租車GPS數(shù)據(jù),感興趣的可以了解一下2023-04-04
opencv3/python 鼠標(biāo)響應(yīng)操作詳解
今天小編就為大家分享一篇opencv3/python 鼠標(biāo)響應(yīng)操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Django分頁查詢并返回jsons數(shù)據(jù)(中文亂碼解決方法)
這篇文章主要介紹了Django分頁查詢并返回jsons數(shù)據(jù)(中文亂碼解決方法),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Django filter動態(tài)過濾與排序?qū)崿F(xiàn)過程解析
這篇文章主要介紹了Django filter動態(tài)過濾與排序?qū)崿F(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11

