<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Python 多重繼承 > 原文: [https://www.programiz.com/python-programming/multiple-inheritance](https://www.programiz.com/python-programming/multiple-inheritance) #### 在本教程中,您將學習 Python 中的多重繼承以及如何在程序中使用它。 您還將了解多級繼承和方法解析順序。 ## Python 多重繼承 [類](/python-programming/class)可以從 Python 中的多個基類派生,類似于 C++ 。 這稱為多重繼承。 在多重繼承中,所有基類的功能都繼承到派生類中。 多重繼承的語法類似于單一[繼承](/python-programming/inheritance)。 ### 示例 ```py class Base1: pass class Base2: pass class MultiDerived(Base1, Base2): pass ``` 在此,`MultiDerived`類是從`Base1`和`Base2`類派生的。 ![Multiple Inheritance in Python](https://img.kancloud.cn/22/31/2231e4dcb29ad3d8ca6285acfec87198_305x301.png "Multiple Inheritance") Python 中的多重繼承 `MultiDerived`類繼承自`Base1`和`Base2`類。 * * * ## Python 多級繼承 我們還可以從派生類繼承。 這稱為多級繼承。 在 Python 中可以是任何深度。 在多級繼承中,基類和派生類的功能都被繼承到新的派生類中。 下面給出了具有相應可視化效果的示例。 ```py class Base: pass class Derived1(Base): pass class Derived2(Derived1): pass ``` 這里,`Derived1`類是從`Base`類派生的,`Derived2`類是從`Derived1`類派生的。 ![Multilevel Inheritance in Python](https://img.kancloud.cn/f9/6e/f96e9bd7320708769b9292e8fb4e44e9_136x398.png "Multilevel Inheritance") Python 中的多級繼承 * * * ## Python 中的方法解析順序 Python 中的每個類均源自`object`類。 它是 Python 中最基本的類型。 因此,從技術上講,所有其他內置或用戶定義的類都是派生類,并且所有對象都是`object`類的實例。 ```py # Output: True print(issubclass(list,object)) # Output: True print(isinstance(5.5,object)) # Output: True print(isinstance("Hello",object)) ``` 在多繼承方案中,將在當前類中首先搜索任何指定的屬性。 如果未找到,則搜索將以深度優先,從左到右的方式繼續進入父類,而無需兩次搜索相同的類。 因此,在上述`MultiDerived`類的示例中,搜索順序為`MultiDerived`,`Base1`,`Base2`,`object`。 該順序也稱為`MultiDerived`類的線性化,用于查找該順序的規則集稱為**方法解析順序(MRO)**。 MRO 必須防止本地優先級排序,并且還必須提供單調性。 它確保類始終出現在其類之前。 如果有多個父級,順序與基類的元組相同。 類別的 MRO 可以視為`__mro__`屬性或`mro()`方法。 前者返回一個元組,而后者返回一個列表。 ```py >>> MultiDerived.__mro__ (<class '__main__.MultiDerived'>, <class '__main__.Base1'>, <class '__main__.Base2'>, <class 'object'>) >>> MultiDerived.mro() [<class '__main__.MultiDerived'>, <class '__main__.Base1'>, <class '__main__.Base2'>, <class 'object'>] ``` 這是一個稍微復雜的多重繼承示例及其可視化以及 MRO。 ![Multiple Inheritance Visualization](https://img.kancloud.cn/69/6b/696b134116608054d0183c3796b461d3_310x379.png "Multiple Inheritance Visualization") 在 Python 中可視化多重繼承 ```py # Demonstration of MRO class X: pass class Y: pass class Z: pass class A(X, Y): pass class B(Y, Z): pass class M(B, A, Z): pass # Output: # [<class '__main__.M'>, <class '__main__.B'>, # <class '__main__.A'>, <class '__main__.X'>, # <class '__main__.Y'>, <class '__main__.Z'>, # <class 'object'>] print(M.mro()) ``` **輸出** ```py [<class '__main__.M'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.X'>, <class '__main__.Y'>, <class '__main__.Z'>, <class 'object'>] ``` 要了解有關如何計算 MRO 的實際算法,請訪問[關于 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>

                              哎呀哎呀视频在线观看