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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg) ***** ## 深入類和對象 ### 鴨子類型和多態 多態的概念是應用于Java和C#這一類強類型語言中,而Python崇尚"鴨子類型" <br>動態語言調用實例方法時不檢查類型,只要方法存在,參數正確,就可以調用。這就是動態語言的“鴨子類型”,它并不要求嚴格的繼承體系,一個對象只要“看起來像鴨子,走起路來像鴨子”,那它就可以被看做是鴨子。 <br>所謂多態:定義時的類型和運行時的類型不一樣,此時就成為多態。 ### 抽象基類(abc模塊) 抽象基類(abstract base class,ABC):抽象基類就是類里定義了純虛成員函數的類。純虛函數只提供了接口,并沒有具體實現。抽象基類不能被實例化(不能創建對象),通常是作為基類供子類繼承,子類中重寫虛函數,實現具體的接口。 <br>抽象基類就是定義各種方法而不做具體實現的類,任何繼承自抽象基類的類必須實現這些方法,否則無法實例化。 ### 應用場景 * 判斷某個對象的類型 * 我們需要強制某個子類必須實現某些方法 ### 使用isinstance和type的區別 ~~~ i = 1 s = 'a' isinstance(i,int) isinstance(s,str) isinstance(s,int) ~~~ ### 類變量和對象變量 ~~~ class A: aa = 1 def __init__(self,x,y): self.x = x self.y = y ~~~ ### 類屬性和實例屬性以及查找順序 ### MRO算法 ![](https://img.kancloud.cn/ef/b3/efb3c391eb17dbfc0cdf687a812b419a_404x444.png) Python2.2之前的算法:金典類 DFS(deep first search):A->B->D->C->E <br> ![](https://img.kancloud.cn/63/c1/63c12d62c20904fe5802357fc3fc6174_411x462.png) Python2.2版本之后,引入了BFS(廣度優先搜索) BFS:A->B->C->D <br>在Python2.3之后,Python采用了C3算法 Python新式類繼承的C3算法:[https://www.cnblogs.com/blackmatrix/p/5644023.html](https://www.cnblogs.com/blackmatrix/p/5644023.html) ### Python對象的自省機制 自省是通過一定的機制查詢到對象的內部結構 <br>Python中比較常見的自省(introspection)機制(函數用法)有: dir(),type(), hasattr(), isinstance(),通過這些函數,我們能夠在程序運行時得知對象的類型,判斷對象是否存在某個屬性,訪問對象的屬性。 ### super函數 在類的繼承中,如果重定義某個方法,該方法會覆蓋父類的同名方法,但有時,我們希望能同時實現父類的功能,這時,我們就需要調用父類的方法了,可通過使用?`super`?來實現
                  <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>

                              哎呀哎呀视频在线观看