<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    5.9. 私有函數

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

                    與大多數的語言不同,一個 Python 函數,方法,或屬性是私有還是公有,完全取決于它的名字。

                    如果一個 Python 函數,類方法,或屬性的名字以兩個下劃線開始 (但不是結束),它是私有的;其它所有的都是公有的。 Python 沒有類方法保護 的概念 (只能用于它們自已的類和子類中)。類方法或者是私有 (只能在它們自已的類中使用) 或者是公有 (任何地方都可使用)。

                    MP3FileInfo 中,有兩個方法:__parse__setitem__。正如我們已經討論過的,__setitem__ 是一個專有方法;通常,你不直接調用它,而是通過在一個類上使用字典語法來調用,但它是公有的,并且如果有一個真正好的理由,你可以直接調用它 (甚至從 fileinfo 模塊的外面)。然而,__parse 是私有的,因為在它的名字前面有兩個下劃線。

                    注意
                    Python 中,所有的專用方法 (像 __setitem__) 和內置屬性 (像 __doc__) 遵守一個標準的命名習慣:開始和結束都有兩個下劃線。不要對你自已的方法和屬性用這種方法命名;到最后,它只會把你 (或其它人) 搞亂。

                    例 5.19. 嘗試調用一個私有方法

                    >>> 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 如果你試圖調用一個私有方法,Python 將引發一個有些誤導的異常,宣稱那個方法不存在。當然它確實存在,但是它是私有的,所以在類外是不可使用的。嚴格地說,私有方法在它們的類外是可以訪問的,只是不容易 處理。在 Python 中沒有什么是真正私有的;在內部,私有方法和屬性的名字被忽然改變和恢復,以致于使得它們看上去用它們給定的名字是無法使用的。你可以通過 _MP3FileInfo__parse 名字來使用 MP3FileInfo 類的 __parse 方法。知道了這個方法很有趣,然后要保證決不在真正的代碼中使用它。私有方法由于某種原因而私有,但是像其它很多在 Python 中的東西一樣,它們的私有化基本上是習慣問題,而不是強迫的。

                    進一步閱讀

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频