什麼叫繼承呢?我們平時經常說,某人繼承了媽媽的雙眼皮,這是基因層面的繼承。類的繼承也是如此,乙個類繼承另乙個類,和孩子在基因層面繼承父母特徵一樣,繼承的同時又有些新增的特徵。
被繼承的類叫parent,繼承的類叫child。沒錯,就是父母和子女的關係。
我們設定乙個「狗」類,給它設定乙個子類,比如泰迪或者柯基。泰迪或者柯基都是狗,都具有狗的一般特點,但是具體有不同,比如柯基的屬性是小短腿,泰迪的屬性捲毛、棕色等。
class
dog():
def__init__
(self,age)
: self.age = age
defbark
(self)
:print
("woof!woof!woof!"
)class
corgi
(dog)
:def
__init__
(self,age)
: self.age =
1def
roll
(self)
:print
("gulugulu!"
)puppy1 = corgi(21)
puppy1.bark(
)puppy1.roll(
)
我們可以觀察到,父類dog中,定義了乙個狗的年齡,定義了乙個方法叫bark。所有的狗都有年齡,也都會叫。然後我們定義了乙個柯基corgi子類,繼承了父類dog的全部屬性,同時具有乙個打滾的屬性,是父類沒有的新增屬性。
如果大家有興趣,可以多定義幾種狗的子類,再多例項幾隻不同的狗。
有句話叫「取其精華,去其糟粕」,程式設計也如此,我們想讓這個子類繼承父類的優秀傳統,而如果父類有些屬性,子類並不需要,那麼怎麼辦呢?
當然是重寫了!
上**,我們知道父類dog()有個bark屬性,例項狗狗會發出三聲「woof!」,但我們不想讓這個子類繼續這樣叫,我們想給小狗狗換個叫聲,可行嗎?
直接上**。run一下**,看看我們創造的叫puppy1的狗狗會怎樣叫?
class
dog():
def__init__
(self,age)
: self.age = age
defbark
(self)
:print
("woof!woof!woof!"
)class
corgi
(dog)
:def
__init__
(self,age)
: self.age =
1#改寫父類的bark屬性
defbark
(self)
:print
("wuwuwuw!"
)def
roll
(self)
:print
("gulugulu!"
)puppy1 = corgi(21)
puppy1.bark(
)puppy1.roll(
)在這裡插入**片
結果給大家看下吧!
說明我們對父類屬性的重寫是成功的。
好了,下次再見!
python 類 繼承 python 類的繼承
1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...
Python學習之路 類繼承
如果兩個類具有同名的屬性和方法的時候就可以使用繼承,例如b類繼承a類,那麼在b類中就有類a中的屬性以及方法。被繼承的類叫做父類,繼承的而得類叫做子類。繼承是物件導向程式設計的第二個特性。一般來說,父類是一些公有的屬性和方法,因此類的繼承能夠減少 的冗餘,提公升 的可讀性,提高開發效率。幾乎在所有物件...
python學習(13) 類 3 類的繼承
class user 定義乙個名為user的類 使用者類 def init self,username,password 初始化屬性username和password self.username username self.password password def login self 使用者登入...