日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python自定義類中內部函數(shù):__repr__()和__string__

系統(tǒng) 1762 0

我們在定義Python類時,經常會看到比較好的代碼中,都有__repr__和__string__,兩個內部函數(shù)的定義。但是我一直很少關注它們的區(qū)別和具體應用場景。稍微做個小結。

1.__foo()__在python中表示__foo__是一個私有private 函數(shù),在CookBook pp254中,解釋為,該函數(shù)不會被子類的相同名稱的函數(shù)重載。一般地說,類中以“下劃線”開頭定義的變量或者函數(shù)都是私有變量或者內部函數(shù),區(qū)別是:

? 1.1 單下劃線開始的變量或者函數(shù)表示非公有名稱,會被子類初始化時處理,也就是說暴露給繼承的子類。

? 1.2 雙下劃線開頭的變量或函數(shù)會對子類隱藏

2.__repr__(),可以被用于obj=eval(repr(obj)),也就說是可以用該函數(shù)返回值的字符串文本重新創(chuàng)建該類的實例;而__str__(),是將實例轉換為一個字符串。

?

            
              #coding:utf-8
class Test():
    def __init__(self,x,y):
        self.x=x
        self.y=y

    def __repr__(self):
        return 'Test({0.x!r},{0.y!r})'.format(self)   

    def __str__(self):   #convert the instance to string,then print out
        return '({0.x!s},{0.y!s})'.format(self)


#output:
In [4]: from my_repr import Test
In [5]: test=Test
In [6]: test
Out[6]: my_repr.Test
In [7]: test=Test(3,4)  #實例化對象
In [8]: test
Out[8]: Test(3,4)   #返回的是__repr__()中的字符串
In [9]: print(test)  #返回的是__str__()的值
(3,4)
In [10]: tt=eval(repr(test))  #tt是Test類的另一個實例
In [11]: tt
Out[11]: Test(3,4)
In [12]: id(tt)==id(test)
Out[12]: False
In [13]: id(tt)
Out[13]: 2302160271176
In [14]: id(test)
Out[14]: 2302160237176
In [15]: type(test)==type(tt)
Out[15]: True

            
          

?


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 渑池县| 越西县| 泗阳县| 阳朔县| 江华| 琼中| 龙门县| 永康市| 新巴尔虎左旗| 凤山县| 铁岭县| 涟源市| 静海县| 剑川县| 霍邱县| 禹城市| 和林格尔县| 民丰县| 郴州市| 安塞县| 逊克县| 洛宁县| 祁东县| 卓尼县| 普洱| 高清| 中西区| 涿鹿县| 永寿县| 贵德县| 泌阳县| 沂水县| 油尖旺区| 碌曲县| 五莲县| 密云县| 洛扎县| 会东县| 石家庄市| 鹤壁市| 伽师县|