Python 私有函數(shù)的實(shí)例詳解
Python 私有函數(shù)的實(shí)例詳解
與大多數(shù)語(yǔ)言一樣,Python 也有私有的概念:
• 私有函數(shù)不可以從它們的模塊外面被調(diào)用
• 私有類方法不能夠從它們的類外面被調(diào)用
• 私有屬性不能夠從它們的類外面被訪問(wèn)
與大多數(shù)的語(yǔ)言不同,一個(gè) Python 函數(shù),方法,或?qū)傩允撬接羞€是公有,完全取決于它的名字。
如果一個(gè) Python 函數(shù),類方法,或?qū)傩缘拿忠詢蓚€(gè)下劃線開始 (但不是結(jié)束),它是私有的;其它所有的都是公有的。
Python 沒有類方法保護(hù) 的概念 (只能用于它們自已的類和子類中)。類方法或者是私有 (只能在它們自已的類中使用) 或者是公有 (任何地方都可使用)。
在 MP3FileInfo 中,有兩個(gè)方法:__parse 和 __setitem__。正如我們已經(jīng)討論過(guò)的,__setitem__ 是一個(gè)專有方法;通常,你不直接調(diào)用它,而是通過(guò)在一個(gè)類上使用字典語(yǔ)法來(lái)調(diào)用,但它是公有的,并且如果有一個(gè)真正好的理由,你可以直接調(diào)用它 (甚至從 fileinfo 模塊的外面)。然而,__parse 是私有的,因?yàn)樵谒拿智懊嬗袃蓚€(gè)下劃線。
Note: Method Naming C onventions
在 Python 中,所有的專用方法 (像 __setitem__) 和內(nèi)置屬性 (像 __doc__) 遵守一個(gè)標(biāo)準(zhǔn)的命名習(xí)慣:開始和結(jié)束都有兩個(gè)下劃線。不要對(duì)你自已的方法和屬性用這種方法命名;到最后,它只會(huì)把你 (或其它人) 搞亂。
1. 嘗試調(diào)用一個(gè)私有方法
>>> import fileinfo >>> m = fileinfo.MP3FileInfo() >>> m.__parse("/music/_singles/kairo.mp3") (1) Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'MP3FileInfo' instance has no attribute '__parse'
(1) 如果你試圖調(diào)用一個(gè)私有方法,Python 將引發(fā)一個(gè)有些誤導(dǎo)的異常,宣稱那個(gè)方法不存在。當(dāng)然它確實(shí)存在,但是它是私有的,所以在類外是不可使用的。嚴(yán)格地說(shuō),私有方法在它們的類外是可以訪問(wèn)的,只是不容易處理。在 Python 中沒有什么是真正私有的;在內(nèi)部,私有方法和屬性的名字被忽然改變和恢復(fù),以致于使得它們看上去用它們給定的名字是無(wú)法使用的。你可以通過(guò) _MP3FileInfo__parse 名字來(lái)使用 MP3FileInfo 類的 __parse方法。知道了這個(gè)方法很有趣,然后要保證決不在真正的代碼中使用它。
私有方法由于某種原因而私有,但是像其它很多在 Python 中的東西一樣,它們的私有化基本上是習(xí)慣問(wèn)題,而不是強(qiáng)迫的。
希望通過(guò)本文大家能夠理解掌握Python 私有函數(shù)的使用,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Python類如何定義私有變量
- Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、實(shí)例化、封裝及私有變量/方法詳解
- 淺談Python中的私有變量
- Python面向?qū)ο笾接袑傩院退接蟹椒☉?yīng)用案例分析
- Python 類的私有屬性和私有方法實(shí)例分析
- Python面向?qū)ο蟪绦蛟O(shè)計(jì)之私有屬性及私有方法示例
- Python中私有屬性的定義方式
- Python 私有化操作實(shí)例分析
- python里運(yùn)用私有屬性和方法總結(jié)
- python直接訪問(wèn)私有屬性的簡(jiǎn)單方法
- 跟老齊學(xué)Python之私有函數(shù)和專有方法
- Python面向?qū)ο蟪绦蛟O(shè)計(jì)之私有變量,私有方法原理與用法分析
相關(guān)文章
Python爬蟲學(xué)習(xí)之requests的使用教程
requests庫(kù)是一個(gè)常用的用于?http?請(qǐng)求的模塊,它使用?python?語(yǔ)言編寫,可以方便的對(duì)網(wǎng)頁(yè)進(jìn)行爬取。本文將通過(guò)示例詳細(xì)講講requests庫(kù)的使用,需要的可以參考一下2022-08-08Python如何實(shí)現(xiàn)定時(shí)器功能
在本篇文章里小編給大家分享的是關(guān)于Python中的簡(jiǎn)單定時(shí)器實(shí)例及代碼,需要的朋友們可以學(xué)習(xí)下。2020-05-05python實(shí)現(xiàn)比較文件內(nèi)容異同
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)比較文件內(nèi)容異同,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06python爬蟲之請(qǐng)求模塊urllib的基本使用
urllib是python內(nèi)置的HTTP請(qǐng)求庫(kù),是一個(gè)用來(lái)處理網(wǎng)絡(luò)請(qǐng)求的python標(biāo)準(zhǔn)庫(kù),下面這篇文章主要給大家介紹了關(guān)于python爬蟲之請(qǐng)求模塊urllib的基本使用,需要的朋友可以參考下2022-04-04Python基礎(chǔ)語(yǔ)法之變量與數(shù)據(jù)類型詳解
這篇文章主要為大家詳細(xì)介紹了Python基礎(chǔ)語(yǔ)法中變量與數(shù)據(jù)類型的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以了解一下2022-07-07django進(jìn)階之cookie和session的使用示例
這篇文章主要介紹了django進(jìn)階之cookie和session的使用示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08