1. 子類沒有初始化函數, 則初始化子類的時候,須要有父類的初始化參數函數
Class P(object):編碼
def __init__(self,name):.net
self.name = nameblog
print(self.name)it
Class C(P):object
pass方法
c = C('my name is c') -->必定要有父類的初始化函數,不然會出錯ps
2. 子類有本身的初始化函數, 而且子類沒有顯式的調用父類的初始化函數的時候,初始化的時候,子類不須要帶父類的初始化參數,子類不會有父類的初始化參數參數
Class P(object):
def __init__(self,name):
self.name = name
print(self.name)
Class C(P):
def __init__(self):
self.name = 'I'm child'
print(self.name)
c = C() -->初始化沒有問題
3. 子類有本身的初始化函數,且子類顯式的調用父類的初始化函數的時候,初始化的時候,子類不須要帶父類的初始化函數,但子類在調用父類的初始化函數的時候須要有父類的參數
Class P(object):
def __init__(self,name):
self.name = name
print(self.name)
Class C(P):
def __init__(self):
super(C,self).__init__('aaa') -->父類的參數,此句相似於 P.__init__(self,'aaa'),當在子類中須要調用父類的屬性或者方法時候,能夠經過父類名直接訪問父類的屬性,當調用父類的方法是,須要將」self」顯示的傳遞進去,這種方式有一個很差的地方就是,須要經父類名硬編碼到子類中,爲了解決這個問題,能夠使用Python中的super關鍵字
self.t = 'I'm child'
c = C() -->初始化沒有問題
c.name -->也有參數
原文出處:
https://blog.csdn.net/brucewong0516/article/details/79121179