繼承的概念
1. 經典類或舊式類(Python3.0以下)
不由任意內建型別派生出的類,稱之為經典類
class 類名: 程式碼 ......
2. 新式類(Python3.0及以上)
class 類名(object): 程式碼 ......
python物件導向的繼承指的是多個類質檢的所屬關係,即子類預設繼承父類的所有屬性和方法。具體如下:
#A:父類 class A(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) #B:子類 class B(A): pass result = B() result.info_print()
在Python中,所有類預設繼承object類,object類是頂級類或基類;其他子類叫做派生類。
二、單繼承
#1. 師父類 class Master(object): def __init__(self): self.kongfu = '[古法煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') #2. 定義徒弟類,繼承師父類 class Prentice(Master): pass #3. 用徒弟類建立物件,呼叫例項屬性和方法 daqiu = Prentice() daqiu.make_cake()
三、多繼承
所謂多繼承,就是指一個類同時繼承多個父類。
#1. 師父類 class Master(object): def __init__(self): self.kongfu = '[古法煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') #2. 建立學校類 class School(object): def __init__(self): self.kongfu = '[黑馬煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') #3. 多繼承 class Prentice(School,Master): pass #3. 用徒弟類建立物件,呼叫例項屬性和方法,驗證多繼承方法 daqiu = Prentice() daqiu.make_cake() ''' 結論:如果一個類繼承多個類,優先繼承第一個父類的同名屬性和方法 '''
結論:如果一個類繼承多個類,優先繼承第一個父類的同名屬性和方法
四、子類重寫父類同名方法和屬性
#1. 師父類 class Master(object): def __init__(self): self.kongfu = '[古法煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') #2. 建立學校類 class School(object): def __init__(self): self.kongfu = '[黑馬煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') #3. 定義徒弟類,繼承師父類和學校類,新增和父類同名的屬性和方法 class Prentice(School,Master): def __init__(self): self.kongfu = '[獨創煎餅果子配方]' def make_cake(self): print(f'運用{self.kongfu}製作煎餅果子') daqiu = Prentice() print(daqiu.kongfu) daqiu.make_cake()
print(Prentice.__mro__) ##通過列印類的.__mro__來檢視該類的繼承關係
結論:如果子類和父類擁有同名屬性和方法,子類建立物件呼叫屬性和方法的時候,呼叫到的是子類裡面的同名屬性和方法。
擴充:mro順序