欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中__repr__和__str__區(qū)別詳解

 更新時(shí)間:2019年11月07日 09:34:22   作者:我愛學(xué)python  
這篇文章主要介紹了Python中__repr__和__str__區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

看下面的例子就明白了

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>

看到了么?上面打印類對(duì)象并不是很友好,顯示的是對(duì)象的內(nèi)存地址

下面我們重構(gòu)下該類的__ repr__以及str,看看它們倆有啥區(qū)別

# 重構(gòu)__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!)

重構(gòu)__ repr__方法后,不管直接輸出對(duì)象還是通過print打印的信息都按我們r(jià)epr方法中定義的格式進(jìn)行顯示了

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

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

你會(huì)發(fā)現(xiàn),直接輸出對(duì)象ts時(shí)并沒有按我們str方法中定義的格式進(jìn)行輸出,而用print輸出的信息卻改變了

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

打印操作會(huì)首先嘗試str和str內(nèi)置函數(shù)(print運(yùn)行的內(nèi)部等價(jià)形式),它通常應(yīng)該返回一個(gè)友好的顯示。

__ repr__用于所有其他的環(huán)境中:用于交互模式下提示回應(yīng)以及repr函數(shù),如果沒有使用str,會(huì)使用print和str。它通常應(yīng)該返回一個(gè)編碼字符串,可以用來重新創(chuàng)建對(duì)象,或者給開發(fā)者詳細(xì)的顯示。

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django中Migrate和Makemigrations實(shí)操詳解

    Django中Migrate和Makemigrations實(shí)操詳解

    這篇文章主要為大家介紹了Django中Migrate和Makemigrations實(shí)操詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Python源碼學(xué)習(xí)之PyType_Type和PyBaseObject_Type詳解

    Python源碼學(xué)習(xí)之PyType_Type和PyBaseObject_Type詳解

    今天給大家?guī)淼氖顷P(guān)于Python源碼的相關(guān)知識(shí)學(xué)習(xí),文章圍繞著PyType_Type和PyBaseObject_Type展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python控制Firefox方法總結(jié)

    Python控制Firefox方法總結(jié)

    在本文里我們給大家分享了關(guān)于如何用Python控制Firefox的知識(shí)點(diǎn)總結(jié),有此需要的朋友們可以參閱下。
    2019-06-06
  • PyQt5 實(shí)現(xiàn)給窗口設(shè)置背景圖片的方法

    PyQt5 實(shí)現(xiàn)給窗口設(shè)置背景圖片的方法

    今天小編就為大家分享一篇PyQt5 實(shí)現(xiàn)給窗口設(shè)置背景圖片的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Django瀑布流的實(shí)現(xiàn)示例

    Django瀑布流的實(shí)現(xiàn)示例

    在瀏覽一些網(wǎng)站時(shí),經(jīng)常會(huì)看到類似于這種滿屏都是圖片,本文主要介紹了Django瀑布流的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-03-03
  • Python urllib.request對(duì)象案例解析

    Python urllib.request對(duì)象案例解析

    這篇文章主要介紹了Python urllib.request對(duì)象案例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化

    python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化

    在圖像處理中,直方圖是非常重要,也是非常有用的一個(gè)處理要素。這篇文章主要介紹了python數(shù)字圖像處理實(shí)現(xiàn)直方圖與均衡化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • pycharm終端無法激活conda環(huán)境的解決辦法

    pycharm終端無法激活conda環(huán)境的解決辦法

    如果您在PyCharm終端中無法激活conda環(huán)境,可能是由于PyCharm沒有正確配置conda解釋器,這篇文章主要給大家介紹了關(guān)于pycharm終端無法激活conda環(huán)境的解決辦法,需要的朋友可以參考下
    2023-09-09
  • Python OpenCV實(shí)現(xiàn)圖像模板匹配詳解

    Python OpenCV實(shí)現(xiàn)圖像模板匹配詳解

    提供一個(gè)模板圖像,一個(gè)目標(biāo)圖像,且滿足模板圖像是目標(biāo)圖像的一部分,從目標(biāo)圖像中尋找特定的模板圖像的過程,即為模板匹配。本文將詳細(xì)講解如何利用Python OpenCV實(shí)現(xiàn)圖像模板匹配,需要的可以參考一下
    2022-04-04
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從任意長度的可迭代對(duì)象中分解元素操作示例

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)從任意長度的可迭代對(duì)象中分解元素操作示例

    這篇文章主要介紹了Python 數(shù)據(jù)結(jié)構(gòu)與算法 從任意長度的可迭代象中分解元素操作,結(jié)合實(shí)例形式分析了Python使用*表達(dá)式針對(duì)可迭代對(duì)象的分解操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論