str存在的意義是為了列印出便於檢視的內容,所以str應該是易於檢視的。可以理解是為了讓使用者檢視,用來了解物件的狀態的。
repr存在的意義是準確的描述物件,所以repr方法應該是無歧義的。可以理解是為了讓程式設計師檢視,用來對程式進行修改的,所以必須是無歧義的。
在這裡舉乙個可能有歧義的例子:
foo = [『這是乙個tuple』,『a,b,c,d,f』,『列表內含有5個物件』 ]
這是乙個包含3個字串的list,如果這裡str是直接列印列表中所有的值,可能就會產生歧義。讓人誤以為是是乙個含有五個物件的tuple
類中__str__的級別比__repr__低,在未定義str的時候repr可以覆蓋str使用,反之不行。
這個特性很容易理解,因為當未定義str函式的時候,使用者仍然可以通過repr函式獲得這個物件的內容。因為無歧義意味著未必易於檢視,但是一定是可檢視的。反過來,乙個易於檢視的內容(str)可能是不精準的。如果repr會被str覆蓋掉,可能會影響程式的準確。
在str或repr只存在乙個的時候,print()函式會呼叫唯一存在的那個。
當兩個方法都存在的時候,print()函式會呼叫str列印更易被閱讀的內容。
Python中字串(str)類中的方法註解
字串的成員函式 capitalize 首字元大寫 其餘小寫 casefold 返回乙個小寫字串的版本 center 居中 然後預設用空格來左右填充到width寬度 width,fillchar ljust 居左 rjust 居右 count count sub start end 從start處到e...
python魔法方法中的str和repr使用和區別
很多時候我們自己編寫乙個類,在將它的例項在終端上列印或檢視的時候,我們往往會看到乙個不太滿意的結果。所以,我們可能會手動列印物件的一些屬性或者是在類裡自己實現乙個方法來返回我們需要的資訊。class car def init self,color self.color color def str s...
PYTHON中 str 函式和 repr
自學python中,學習中總結的經驗部落格,如有錯誤,還請諒解 python中定義乙個類時,常用 str 以及 repr 函式輸出這個類的具體描述,但這兩個函式具體又有些什麼區別呢?一句話總結的話 repr 比 str 的使用要求更加嚴格,優先順序更低。優先順序比較 class my func ob...