一個(gè)例子搞懂Python中__str__與__repr__的區(qū)別

通常在打印對象的時(shí)候,打印的總是對象的地址,為了在打印的時(shí)候打印出具體的信息,我們會采用在類中重寫strrepr方法。下面我們來看看兩者的用途和卻別。

首先我們來看看不重寫這兩個(gè)方法結(jié)果怎樣:

class Person:
   def __init__(self,name,age):
       self.name = name
       self.age = age
person = Person("張三",19)
print(person)

p1 = Person("李四",10)
p2 = Person("王五",20)
p3 = Person("趙六",30)
lst = [p1,p2,p3]
print(lst)

輸出結(jié)果:

<__main__.Person object at 0x0000000001E8D860>
[<__main__.Person object at 0x0000000001E8D908>, <__main__.Person object at 0x0000000001E8D8D0>, <__main__.Person object at 0x0000000001E8D940>]

我們可以看到輸出的結(jié)果只能看到對象的地址,不能清楚的知道對象的具體信息,那么我們用下面這個(gè)例子來演示重寫之后的效果。

class Person:
   def __init__(self,name,age):
       self.name = name
       self.age = age
   def __str__(self):
       return f"姓名:{self.name},年齡:{self.age}歲."
   def __repr__(self):
       return f"這位同學(xué)叫:{self.name},今年:{self.age}歲."
person = Person("張三",19)
print(person)

p1 = Person("李四",10)
p2 = Person("王五",20)
p3 = Person("趙六",30)
lst = [p1,p2,p3]
print(lst)

輸出結(jié)果:

姓名:張三,年齡:19歲.
[這位同學(xué)叫:李四,今年:10歲., 這位同學(xué)叫:王五,今年:20歲., 這位同學(xué)叫:趙六,今年:30歲.]

總結(jié):
__str__(),用于直接打印對象本身。
__repr__(),用于打印列表里面包含對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容