Python類(4)類的繼承
阿新 • • 發佈:2021-01-23
Python類(4)類的繼承
類的繼承格式
class 子類(基類):
pass
基類(父類): 被繼承者(先輩)
子類:繼承者(後輩)
如果沒有基類,就用object
比如,我們前面幾節課的內容,都是直接繼承自object這個基類的.理論上,所有的類都是object的子類
可以用__base__屬性檢視子類的父類
檢視子類的父類
class 子類(object):
pass
print(子類.__base__)
輸出:
檢視子類的父類的第二個示例
class 子類(object):
pass
class 孫子類(子類):
pass
print(孫子類.__base__)
輸出:
除了這樣的單繼承之外,還可以多繼承
多繼承寫法:
class 子類(父類,母類):
pass
這裡只是舉了個例子,有兩個父類,也可以是三個,四個,五個
這裡不再舉例了,有興趣的同學可以自行嘗試
繼承了什麼
繼承的目的有2個:
- 繼往
- 開來
繼往:就是原來有的,我都有
開來:就是原來沒有的,我也可以有
繼承的基本使用:
class A(object):
def __init__(self):
self.name = "張三"
def move(self):
print("我可以移動" )
def swim(self):
print("游泳我也會哦")
class B(A):
def __init__(self):
super().__init__()
self.age = 10
def jump(self):
print("我還可以跳")
def move(self):
print("我的移動是飛哦")
b = B()
print(b.name)
print(b.age)
b.move()
b. jump()
b.swim()
程式碼分析:
A:是基類
B:是子類
A有一個例項屬性name, 兩個例項方法move(), swim()
B繼承自A,自建了一個例項屬性age, 一個例項方法jump(),改寫了move()方法
從效果圖可以看出來
b有name屬性, 有age屬笥
b的jump(),swim()方法
但是move()方法與A中自的那個move()方法是不一樣的.這個過程稱為重寫(過載)
總結
- 子類繼承父類時,父類可以有一個或多個
- 子類繼承父類時,會把父類的例項屬性,例項方法都繼承過來
- 子類如果對父類的行為(方法)不習慣,可以選擇改良(重寫)
- 子類如果有建構函式,父類的建構函式將不會被自動呼叫,需要手動呼叫super().init()
- 如果子類有多個父類,在使用super().init()方法呼叫父類的建構函式時,會按照父類的順序呼叫第一個有建構函式的父類的建構函式.
- 子類可以對父類沒有想到的東西加以新增(子類可以新增屬性,方法)