国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 私有函數(shù)的實(shí)例詳解

2020-01-04 16:43:17
字體:
供稿:網(wǎng)友

Python 私有函數(shù)的實(shí)例詳解

與大多數(shù)語言一樣,Python 也有私有的概念:

• 私有函數(shù)不可以從它們的模塊外面被調(diào)用
• 私有類方法不能夠從它們的類外面被調(diào)用
• 私有屬性不能夠從它們的類外面被訪問

與大多數(shù)的語言不同,一個(gè) Python 函數(shù),方法,或?qū)傩允撬接羞€是公有,完全取決于它的名字。

如果一個(gè) Python 函數(shù),類方法,或?qū)傩缘拿忠詢蓚€(gè)下劃線開始 (但不是結(jié)束),它是私有的;其它所有的都是公有的。

Python 沒有類方法保護(hù) 的概念 (只能用于它們自已的類和子類中)。類方法或者是私有 (只能在它們自已的類中使用) 或者是公有 (任何地方都可使用)。

在 MP3FileInfo 中,有兩個(gè)方法:__parse 和 __setitem__。正如我們已經(jīng)討論過的,__setitem__ 是一個(gè)專有方法;通常,你不直接調(diào)用它,而是通過在一個(gè)類上使用字典語法來調(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)格地說,私有方法在它們的類外是可以訪問的,只是不容易處理。在 Python 中沒有什么是真正私有的;在內(nèi)部,私有方法和屬性的名字被忽然改變和恢復(fù),以致于使得它們看上去用它們給定的名字是無法使用的。你可以通過 _MP3FileInfo__parse 名字來使用 MP3FileInfo 類的 __parse方法。知道了這個(gè)方法很有趣,然后要保證決不在真正的代碼中使用它。

私有方法由于某種原因而私有,但是像其它很多在 Python 中的東西一樣,它們的私有化基本上是習(xí)慣問題,而不是強(qiáng)迫的。

希望通過本文大家能夠理解掌握Python 私有函數(shù)的使用,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 谢通门县| 兴业县| 泰来县| 深圳市| 蓬安县| 图们市| 东阿县| 达拉特旗| 汉阴县| 崇明县| 皮山县| 永修县| 屏山县| 天峨县| 科技| 肇州县| 宿迁市| 克东县| 山丹县| 巧家县| 南丰县| 赤城县| 瓮安县| 云梦县| 彭水| 平邑县| 鲁甸县| 沙田区| 常山县| 东乌| 宝清县| 昌吉市| 商丘市| 海阳市| 巴南区| 夹江县| 江阴市| 梅州市| 泊头市| 吉林省| 淮阳县|