刻意練習Python基礎 ——day 14:類與對象(下)

17天 —— Python基礎刻意練習

Day 01——Task01:變量、運算符與數據類型
Day 02——Task02:條件與循環
Day 03——Task03:列表與元組(上)
Day 04——Task03:列表與元組(下)
Day 05——Task04:字符串與序列
Day 06——Task05:函數與Lambda表達式(上)
Day 07——Task05:函數與Lambda表達式(下)
Day 08——Task06:字典與集合
Day 09——Task07:文件與文件系統(上)
Day 10——Task07:文件與文件系統(下)
Day 11——Task08:異常處理
Day 12——Task09:else 與 with 語句
Day 13——Task10:類與對象(上)
Day 14——Task10:類與對象(下)
Day 15——Task11:魔法方法(上)
Day 16——Task11:魔法方法(下)
Day 17——Task12:模塊
    



類與對象



補充:子類繼承父類構造函數說明


 情況一:子類需要自動調用父類的方法

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

class Father(object):
    
    def __init__(self, name):
        self.name = name
        print ("name: {}".format(self.name))
        
    def getName(self):
        return 'Father:' + self.name

class Son(Father):
    def getName(self):
        return 'Son:' + self.name
    
 
if __name__ == '__main__':
    son = Son('MiveVax')
    print (son.getName())


# name: MiveVax
# Son:MiveVax



 情況二:子類不需要自動調用父類的方法

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

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

# hi
# Son:MiveVax



 情況三:子類重寫__init__方法又需要調用父類的方法

  如果重寫了__init__ 時,要繼承父類的構造方法,可以使用 super 關鍵字:super(子類,self).__init__(參數1,參數2,....)
  還有一種經典寫法:父類名稱.__init__(self,參數1,參數2,...)

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

# name: MiveVax
# hi
# Son:MiveVax

參考資料

  • https://www.runoob.com/python3/python3-class.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章