1. 程式人生 > 其它 >Python-類的內建方法中__repr__和__str__的區別

Python-類的內建方法中__repr__和__str__的區別

Python有一個內建的函式叫repr,它能把一個物件用字串的形式表達出來以便辨認,這就是“字串表示形式”。repr就是通過__repr__這個特殊方法來得到一個物件的字串表示形式。如果沒有實現__repr__,當我們再控制檯裡列印一個變數的例項時,得到的字串可能會是<__main__.Object at 0x14af07dbe80>,這個表示的是列印的物件,以及物件的記憶體地址

  • __repr__和__str__的區別:
  • 直接輸入物件不同

1、__str__:直接輸出物件(面向開發者)顯示物件的記憶體地址,使用print輸出物件顯示的是str中重構的內容

class Name:
    
def __init__(self, name): self.name = name def __str__(self): return 'Name: %s' % self.name Name('vv') Out[5]: <__main__.Name at 0x7fdca8966d90> print(Name('vv')) Name: vv

    2、__repr__:不管是直接輸出物件(面向開發者)還是通過print輸出物件,列印的資訊都按照repr中重構的內容顯示

class Name:
    def __init__(self, name):
        self.name 
= name def __repr__(self): return 'Name: %s' % self.name Name('vv') Out[8]: Name: vv print(Name('vv')) Name: vv

    3、如果只寫了__str__方法,可以申明__repr__ = __str__,也可以如__repr__一樣有同樣的效果

class Name:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return
'Name: %s' % self.name __repr__ = __str__ Name('vv') Out[11]: Name: vv print(Name('vv')) Name: vv

總結:當把物件作為引數傳入又想可讀性較高時,建議在類中定義__repr__方法

三十六般武藝,七十二般變化,修練出個人品牌併發出光芒