列印物件 str 和 repr

2022-06-25 13:42:15 字數 1236 閱讀 8032

當列印乙個類的例項時,返回的字串是物件的位址資訊,如<__main__.student object at 0x109afb310>,很不好看

可通過在類內定義__str__(),這樣列印例項時就會返回乙個好看的字串,而且容易看出例項內部重要的資料

定義__str__()

class

student(object):

def__init__

(self, name):

self.name =name

def__str__

(self):

return

'student object (name: %s)

' %self.name

print(student('

michael

')) #

輸出:student object (name: michael)

定義__repr__()

s = student('

michael')

s

#輸出:<__main__.student object at 0x109afb310>,列印出來的例項還是不好看

因為直接顯示例項變數時,它呼叫的不是__str__(),而是__repr__()

__str__()和__repr__()區別

__str__():返回使用者看到的字串

__repr__():返回程式開發者看到的字串,即__repr__()是為除錯服務的

解決辦法是再定義乙個__repr__(),但是通常__str__()和__repr__()**都是一樣的

所以,有個偷懶的寫法,就是直接將__str__ 賦給__repr__

class

student(object):

def__init__

(self, name):

self.name =name

def__str__

(self):

return

'student object (name=%s)

' %self.name

__repr__ = __str__

s = student('

michael')

s

#輸出:student object (name: michael)

Python內建函式str 和repr

內建函式str 和repr representation,表達,表示 或反引號操作符 可以方便地以字串的方式獲取物件的內容 型別 數值屬性等資訊。str 函式得到的字串可讀性好 故被print呼叫 repr 函式得到的字串通常可以用來重新獲得該物件,通常情況下 obj eval repr obj 這...

PYTHON中 str 函式和 repr

自學python中,學習中總結的經驗部落格,如有錯誤,還請諒解 python中定義乙個類時,常用 str 以及 repr 函式輸出這個類的具體描述,但這兩個函式具體又有些什麼區別呢?一句話總結的話 repr 比 str 的使用要求更加嚴格,優先順序更低。優先順序比較 class my func ob...

python之repr 和str 的區別

repr repr object 返回乙個可以用來表示物件的可列印字串 首先,嘗試生成這樣乙個字串,將其傳給 eval 可重新生成同樣的物件 否則,生成用尖括號包住的字串,包含型別名和額外的資訊 比如位址 乙個類 class 可以通過 repr 成員來控制repr 函式作用在其實例上時的行為。str...