<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > Python基礎教程 >
        • python基礎教程之python基礎入門之十六 —— 繼承

        本站最新發布   Python從入門到精通|Python基礎教程
        試聽地址  
        http://www.squ68.com/eschool/python.html


        一、定義

        python面對對象的繼承指的是多個類之間的所屬關系,即子類默認繼承父類的所由屬性和方法

        復制代碼
        class A(object):
            def __init__(self):
                self.num=1
            def info_print(self):
                print(self.num)
        
        #子類B
        class B(A):
            pass
        
        resoult=B()
        resoult.info_print()  #1
        復制代碼

        二、單繼承和多繼承

        • 單繼承:
        • 多繼承:一個類同時繼承多個父類

        P.s:當一個類有多個父類得時候,同名屬性和方法默認使用第一個父類的。

        復制代碼
        class A(object):
            def __init__(self):
                self.str = 'A類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        class B(object):
            def __init__(self):
                self.str = 'B類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        class C(A, B):
            pass
        
        class D(B, A):
            pass
        
        c = C()
        c.print_str()  # 運用A類的初始定義
        d = D()
        d.print_str()  # 運用B類的初始定義
        復制代碼

        三、子類重寫父類同名方法和屬性

        子類和父類具有同名屬性和方法,默認使用子類的同名屬性和方法

        復制代碼
        class A(object):
            def __init__(self):
                self.str = 'A類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        class B(object):
            def __init__(self):
                self.str = '子類B類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        b = B()
        b.print_str()  # 運用子類B類的初始定義
        復制代碼

        四、子類調用父類的同名方法和屬性

        復制代碼
        class A(object):
            def __init__(self):
                self.str = 'A類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        class B(object):
            def __init__(self):
                self.str = 'B類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
        class C(A, B):
            def __init__(self):
                self.str = '子類C類的初始定義'
        
            def print_str(self):
                print(f'運用{self.str}')
        
            def print_self_str(self):
                self.__init__()
                self.print_str()
                # self即函數本身,這里前面調用了self參數,括號里就不用寫了
                # self.print_str(self) 傳了兩遍參數會報錯
        
            def print_A_str(self):
                A.__init__(self)
                A.print_str(self)
        
            def print_B_str(self):
                B.__init__(self)
                B.print_str(self)
        
        c = C()
        c.print_str()  # 運用子類C類的初始定義
        c.print_self_str()  # 運用子類C類的初始定義
        c.print_A_str()  # 運用A類的初始定義
        c.print_B_str()  # 運用B類的初始定義
        c.print_str()  # 運用B類的初始定義
        c.print_self_str()  # 運用子類C類的初始定義
        # 前后兩個print_str()輸出值不一樣,因為該函數沒有重新初始化self.str
        
        # __mro__查看繼承順序
        print(C.__mro__)  
        # (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
        復制代碼

        五、多層繼承

        eg:C類繼承B類,B類繼承A類,像這種三代及以上的叫多層繼承。規則同繼承

        六、super調用父類方法

        使用super()可以自動查找父類。調用順序遵循__mro__類屬性的順序。比較適合單繼承使用。

        復制代碼
        class A(object):
            def __init__(self):
                self.str='A類的初始定義'
            def print_str(self):
                print(f'運用{self.str}')
        
        class B(A):
            def __init__(self):
                self.str = 'B類的初始定義'
        
            def print_str(self):
                # 1、 super()帶參數
                # super(B, self).__init__()
                # super(B, self).print_str()
                # 2、 super()無參數
                super().__init__()
                super().print_str()
        
        class C(B):
            def __init__(self):
                self.str= 'C類的初始定義'
        
            def print_str(self):
                # 1、 super()帶參數
                # super(C,self).__init__()
                # super(C,self).print_str()
                # 2、 super()無參數
                super().__init__()
                super().print_str()
        
        c = C()
        c.print_str()  # 運用A類的初始定義
        復制代碼

        七、私有權限

        • 不能繼承給子類的屬性和方法需要添加私有權限
        • 私有權限不能在外部直接輸出或使用
        • 語法:私有屬性和方法區別在名字前面加兩個下劃線
        class 類名():
            #私有屬性
            __屬性名 =# 私有方法
            def  __函數名(self):
               代碼

         

        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看