Python 魔法方法(二) __str__() 和 __repr__()

兩個方法的作用:將類信息轉換成字符串形式的內容,讓用戶和開發人員獲得類的更多信息。

 

先看例子

>>> class A:
    pass
 
>>> a1 = A()
>>> a1
<__main__.A object at 0x000000000302C358>
 
>>> print(a1)
<__main__.A object at 0x000000000302C358>
這樣,智能知道A這個對象,並沒有其他可讀信息。

 
>>> class A:
    def __str__(self):       
        return "into __str__"                                                                      
 
>>> a1 = A()
>>> a1
<__main__.A object at 0x00000000033712E8>
 
>>> print a1
into __str__
可以知道,用print會調用__str__方法,可以打印出__str__中的信息,所以,當我們需要這個類需要返回哪些額外信息是,可以先設定好。

>>> class A:
    def __repr__(self):   
        return "into __repr__"
 
    
>>> a1 = A()
>>> a1
into __repr__
 
>>> print(a1)
into __repr__
當在類中重寫了__repr__方法,直接輸出a1,不再是返回類對象,而是調用了__repr__方法。

在這裏,顯示相同的結果,是因爲print會優先調用重寫的__str__方法,如果__str__沒有重寫,會調用重寫的__repr__方法。

 

當兩個方法都重寫時:

 
>>> class A:
    def __str__(self):
        return "into __str__"
    def __repr__(self):   
        return "into __repr__"
 
    
>>> a1 = A()
>>> a1
into __repr__
>>> print(a1)
into __str__
直接輸出a1 會進入重寫的__repr__方法,print會進入重寫的__str__方法。

 

總結:

1、用print去打印 實例,調用順序是:重寫的__str__方法>重寫的__repr__方法>未重寫的__str__方法>未重寫的__repr__方法

2、__str__實際上是調用了__repr__
————————————————
版權聲明:本文爲CSDN博主「yusuiyu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yusuiyu/article/details/87884977

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章