__str__和__repr__有什麼差別
__str__和repr__的差異是:__str__會傳回一個友善的顯示,而__repr__需要重構方法,然後在底層進行__repr__的顯示。 __str__會覆蓋__repr__以得到更友善的使用者顯示。
__repr__和__str__的差異(解釋)
__repr__和__str__這兩個方法都是用來顯示的,__str__是面向使用者的,而__repr__則是面向程式設計師。
列印操作會先嘗試__str__和str內建函數(print運行的內部等價形式),它通常應該傳回一個友善的顯示。
__repr__用於所有其他的環境:用於交互模式下提示回應以及repr函數,如果沒有使用__str__,會使用print和str。它通常應該返回一個編碼字串,可以用來重新建立對象,或給開發者詳細的顯示。
當我們想所有環境下都統一顯示的話,可以重構__repr__方法;當我們想在不同環境下支援不同的顯示,例如終端用戶顯示使用__str__,而程式設計師在開發期間則使用底層的__repr__來顯示,實際上__str__只是覆蓋了__repr__以獲得更友善的使用者顯示。
class Test(object): def __init__(self, value='hello, world!'): self.data = value >>> t = Test() >>> t <__main__.Test at 0x7fa91c307190> >>> print t <__main__.Test object at 0x7fa91c307190> # 看到了么?上面打印类对象并不是很友好,显示的是对象的内存地址 # 下面我们重构下该类的__repr__以及__str__,看看它们俩有啥区别 # 重构__repr__ class TestRepr(Test): def __repr__(self): return 'TestRepr(%s)' % self.data >>> tr = TestRepr() >>> tr 直接终端显示,不print就是面向程序员 TestRepr(hello, world!) >>> print tr print是面向程序员 TestRepr(hello, world!) # 重构__repr__方法后,不管直接输出对象还是通过print打印的信息都按我们__repr__方法中定义的格式进行显示了 # 重构__str__ calss TestStr(Test): def __str__(self): return '[Value: %s]' % self.data >>> ts = TestStr() >>> ts <__main__.TestStr at 0x7fa91c314e50> >>> print ts [Value: hello, world!] # 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了
以上是__str__和__repr__有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

Uvicorn是如何持續監聽HTTP請求的? Uvicorn是一個基於ASGI的輕量級Web服務器,其核心功能之一便是監聽HTTP請求並進�...

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...
