91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中__repr__和__str__區別詳解

發布時間:2020-08-30 17:29:14 來源:腳本之家 閱讀:210 作者:我愛學python 欄目:開發技術

看下面的例子就明白了

class Test(object):
  def __init__(self, value='hello, world!'):
    self.data = value

>>> t = Test()
>>> t
<__main__.Test at 0x7fa91c307190>
>>> print t
<__main__.Test object at 0x7fa91c307190>

看到了么?上面打印類對象并不是很友好,顯示的是對象的內存地址

下面我們重構下該類的__ repr__以及str,看看它們倆有啥區別

# 重構__repr__
class TestRepr(Test):
  def __repr__(self):
    return 'TestRepr(%s)' % self.data

>>> tr = TestRepr()
>>> tr        直接終端顯示,不print就是面向程序員
TestRepr(hello, world!)
>>> print tr     print是面向程序員
TestRepr(hello, world!)

重構__ repr__方法后,不管直接輸出對象還是通過print打印的信息都按我們repr方法中定義的格式進行顯示了

# 重構__str__
calss TestStr(Test):
  def __str__(self):
    return '[Value: %s]' % self.data

>>> ts = TestStr()
>>> ts
<__main__.TestStr at 0x7fa91c314e50>
>>> print ts
[Value: hello, world!]

你會發現,直接輸出對象ts時并沒有按我們str方法中定義的格式進行輸出,而用print輸出的信息卻改變了

repr和str這兩個方法都是用于顯示的,str是面向用戶的,而repr面向程序員。

打印操作會首先嘗試str和str內置函數(print運行的內部等價形式),它通常應該返回一個友好的顯示。

__ repr__用于所有其他的環境中:用于交互模式下提示回應以及repr函數,如果沒有使用str,會使用print和str。它通常應該返回一個編碼字符串,可以用來重新創建對象,或者給開發者詳細的顯示。

當我們想所有環境下都統一顯示的話,可以重構repr方法;當我們想在不同環境下支持不同的顯示,例如終端用戶顯示使用str,而程序員在開發期間則使用底層的repr來顯示,實際上str只是覆蓋了repr以得到更友好的用戶顯示。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹巴县| 竹溪县| 梁河县| 西安市| 青冈县| 厦门市| 叙永县| 房山区| 汾西县| 策勒县| 石景山区| 哈密市| 应城市| 通化市| 明星| 宜春市| 尉犁县| 新兴县| 如东县| 天峻县| 淮南市| 兴仁县| 永济市| 沾化县| 六枝特区| 托克托县| 镇沅| 大宁县| 乐陵市| 郴州市| 甘泉县| 陈巴尔虎旗| 晋中市| 永仁县| 大足县| 阆中市| 九江市| 枞阳县| 伽师县| 惠安县| 昌吉市|