Python子類繼承父類的構造函數


前言

子類繼承父類的構造函數__init__,具體有幾種情況,想一口氣說出來還真有點難。看到菜鳥教程總結的非常不錯,特意記錄下來,也方便自己后面翻閱。

詳情

  • 情況一

    子類不重寫__init__方法,實例化后會自動調用父類的__init__方法。

    實例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
      
    class Son(Father):
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    輸出結果:

    name: runoob
    Son runoob
    
  • 情況二

    子類重寫__init__方法,實例化后會覆蓋父類的__init__方法,父類的__init__方法不再執行。

    實例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
     
    class Son(Father):
        def __init__(self, name):
            print("hi")
            self.name = name
    
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    輸出結果:

    hi
    Son runoob
    
  • 情況三

    子類重寫__init__方法,同時又需要調用父類的__init__方法,使用super()函數,super()是一個特殊函數,可以調用父類的__init__方法。

    實例

    class Father:
        def __init__(self, name):
            self.name = name
            print(f'name: {self.name}')
    
        def getName(self):
            return f'Father {self.name}'
     
    class Son(Father):
        def __init__(self, name):
            super().__init__(name)
            print("hi")
            self.name = name
    
        def getName(self):
            return f'Son {self.name}'
     
    if __name__=='__main__':
        son = Son('runoob')
        print(son.getName())
    

    輸出結果:

    name: runoob
    hi
    Son runoob
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM