程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python子類繼承父類構造函數

編輯:Python

1、在子類中需要父類的構造方法就需要調用父類的構造方法,或者不重寫父類的構造方法。

子類不重寫 init,實例化子類時,會自動調用父類定義的 init。

class Father(object): # 所有的父類都默認繼承object類,可寫可不寫https://blog.csdn.net/txnuli/article/details/110862361
def __init__(self, name):
self.name = name # self指的是自身,這裡的self就是類自身,self.name就是類裡的變量,是Father所有。
print(f"name:{
self.name}")
def getName(self):
return 'Father ' + self.name
class Son(Father):
def getName(self):
return 'Son ' + self.name
if __name__ == '__main__':
son = Son('yaya')
print(son.getName())

輸出結果為:

name:yaya
Son yaya

2、重寫__init__ 時,實例化子類,就不會調用父類已經定義的 init,
語法格式如下:

class Father(object):
def __init__(self, name):
self.name = name # self指的是自身,這裡的self就是類自身,self.name就是類裡的變量,是Father所有。
print(f"name:{
self.name}")
def getName(self):
return 'Father ' + self.name
class Son(Father):
def __init__(self, name):
self.name = name
print('hi')
def getName(self):
return 'Son ' + self.name
if __name__ == '__main__':
son = Son('yaya')
print(son.getName())

輸出結果為:

hi
Son yaya

3、重寫__init__ 時,要繼承父類的構造方法,可以使用 super 關鍵字:

super(子類,self).__init__(參數1,參數2,....)
或
父類名稱.__init__(self,參數1,參數2,...)
class Father(object):
def __init__(self, name):
self.name = name # self指的是自身,這裡的self就是類自身,self.name就是類裡的變量,是Father所有。
print(f"name:{
self.name}")
def getName(self):
return 'Father ' + self.name
class Son(Father):
def __init__(self, name):
self.name = name
print('hi')
super().__init__(name)
def getName(self):
return 'Son ' + self.name
if __name__ == '__main__':
son = Son('yaya')
print(son.getName())

輸出結果為:

hi
name:yaya
Son yaya

總結:
一:子類調用父類的方法:子類不重寫__init__()方法,實例化子類後,會自動調用父類的__init__()的方法。
二:子類不需要自動調用父類的方法:子類重寫__init__()方法,實例化子類後,將不會自動調用父類的__init__()的方法。
三:子類重寫__init__()方法又需要調用父類的方法:使用super關鍵詞


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved