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