Python快速學習——類的繼承
阿新 • • 發佈:2021-01-26
接上一篇https://blog.csdn.net/weixin_41823258/article/details/112503230
1,繼承
什麼叫繼承呢?我們平時經常說,某人繼承了媽媽的雙眼皮,這是基因層面的繼承。類的繼承也是如此,一個類繼承另一個類,和孩子在基因層面繼承父母特徵一樣,繼承的同時又有些新增的特徵。
被繼承的類叫Parent,繼承的類叫child。沒錯,就是父母和子女的關係。
我們設定一個“狗”類,給它設定一個子類,比如泰迪或者柯基。泰迪或者柯基都是狗,都具有狗的一般特點,但是具體有不同,比如柯基的屬性是小短腿,泰迪的屬性捲毛、棕色等。
class Dog():
def __init__(self,age):
self.age = age
def bark(self):
print("Woof!Woof!Woof!")
class Corgi(Dog):
def __init__(self,age):
self.age = 1
def roll(self):
print("Gulugulu!")
puppy1 = Corgi(21)
puppy1.bark()
puppy1.roll()
我們可以觀察到,父類Dog中,定義了一個狗的年齡,定義了一個方法叫Bark。所有的狗都有年齡,也都會叫。然後我們定義了一個柯基Corgi子類,繼承了父類Dog的全部屬性,同時具有一個打滾的屬性,是父類沒有的新增屬性。
如果大家有興趣,可以多定義幾種狗的子類,再多例項幾隻不同的狗。
2.重寫父類的方法
有句話叫“取其精華,去其糟粕”,程式設計也如此,我們想讓這個子類繼承父類的優秀傳統,而如果父類有些屬性,子類並不需要,那麼怎麼辦呢?
當然是重寫了!
上程式碼,我們知道父類Dog()有個bark屬性,例項狗狗會發出三聲“woof!”,但我們不想讓這個子類繼續這樣叫,我們想給小狗狗換個叫聲,可行嗎?
直接上程式碼。run一下程式碼,看看我們創造的叫puppy1的狗狗會怎樣叫?
class Dog():
def __init__(self,age):
self.age = age
def bark(self):
print("Woof!Woof!Woof!")
class Corgi(Dog):
def __init__(self,age):
self.age = 1
#改寫父類的bark屬性
def bark(self):
print("Wuwuwuw!")
def roll(self):
print("Gulugulu!")
puppy1 = Corgi(21)
puppy1.bark()
puppy1.roll()在這裡插入程式碼片
結果給大家看下吧!
說明我們對父類屬性的重寫是成功的。
好了,下次再見!