日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

python中的repr是什么意思_Python中__repr__和__str__区别详解

發(fā)布時(shí)間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的repr是什么意思_Python中__repr__和__str__区别详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

看下面的例子就明白了

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ì)象還是通過(guò)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í)并沒(méi)有按我們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ù),如果沒(méi)有使用str,會(huì)使用print和str。它通常應(yīng)該返回一個(gè)編碼字符串,可以用來(lái)重新創(chuàng)建對(duì)象,或者給開(kāi)發(fā)者詳細(xì)的顯示。

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

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

總結(jié)

以上是生活随笔為你收集整理的python中的repr是什么意思_Python中__repr__和__str__区别详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。