<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                當然,如果一種語言不支持繼承就,“類”就沒有什么意義。派生類的定義如下所示: ~~~ class DerivedClassName(BaseClassName): . . . ~~~ 命名?BaseClassName?(示例中的基類名)必須與派生類定義在一個作用域內。除了類,還可以用表達式,基類定義在另一個模塊中時這一點非常有用: `class DerivedClassName(modname.BaseClassName):` 派生類定義的執行過程和基類是一樣的。構造派生類對象時,就記住了基類。這在解析屬性引用的時候尤其有用:如果在類中找不到請求調用的屬性,就搜索基類。如果基類是由別的類派生而來,這個規則會遞歸的應用上去。 派生類的實例化沒有什么特殊之處:?DerivedClassName()?(示列中的派生類)創建一個新的類實例。方法引用按如下規則解析:搜索對應的類屬性,必要時沿基類鏈逐級搜索,如果找到了函數對象這個方法引用就是合法的。 派生類可能會覆蓋其基類的方法。因為方法調用同一個對象中的其它方法時沒有特權,基類的方法調用同一個基類的方法時,可能實際上最終調用了派生類中的覆蓋方法。(對于 C++ 程序員來說,Python 中的所有方法本質上都是?虛?方法。) 派生類中的覆蓋方法可能是想要擴充而不是簡單的替代基類中的重名方法。有一個簡單的方法可以直接調用基類方法,只要調用:?BaseClassName.methodname(self,?arguments)。有時這對于客戶也很有用。(要注意只有?BaseClassName?在同一全局作用域定義或導入時才能這樣用。) Python 有兩個用于繼承的函數: * 函數?isinstance()?用于檢查實例類型:?isinstance(obj,?int)?只有在?obj.__class__?是?int?或其它從?int?繼承的類型 * 函數?issubclass()?用于檢查類繼承:?issubclass(bool,?int)?為?True,因為?bool?是 int 的子類。但是,?issubclass(unicode,?str)?是?False,因為?unicode?不是?str?的子類(它們只是共享一個通用祖先類?basestring?)。 ### 9.5.1\. 多繼承 Python 同樣有限的支持多繼承形式。多繼承的類定義形如下例: ~~~ class DerivedClassName(Base1, Base2, Base3): . . . ~~~ 在大多數情況下,在最簡單的情況下,你能想到的搜索屬性從父類繼承的深度優先,左到右,而不是搜索兩次在同一個類層次結構中,其中有一個重疊。因此,如果在?DerivedClassName?(示例中的派生類)中沒有找到某個屬性,就會搜索?Base1,然后(遞歸的)搜索其基類,如果最終沒有找到,就搜索?Base2,以此類推。 實際上,super()?可以動態的改變解析順序。這個方式可見于其它的一些多繼承語言,類似 call-next-method,比單繼承語言中的 super 更強大 。 動態調整順序十分必要的,因為所有的多繼承會有一到多個菱形關系(指有至少一個祖先類可以從子類經由多個繼承路徑到達)。例如,所有的 new-style 類繼承自?object?,所以任意的多繼承總是會有多于一條繼承路徑到達?object?。 為了防止重復訪問基類,通過動態的線性化算法,每個類都按從左到右的順序特別指定了順序,每個祖先類只調用一次,這是單調的(意味著一個類被繼承時不會影響它祖先的次序)。總算可以通過這種方式使得設計一個可靠并且可擴展的多繼承類成為可能。進一步的內容請參見[http://www.python.org/download/releases/2.3/mro/](http://www.python.org/download/releases/2.3/mro/)?。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看