1.屬性繼承一定記得要加上super(),如下圖,不然的子類的屬性就只有你新增的,如下圖,父類有三個屬性 name, age, gender ,子類新增了乙個weight屬性, 屬性命名的話一般有三種形式:
直接名字 self.weight
名字前面加乙個下劃線 如 self._weight
名字前面加兩個下劃線 如 self.__weight
區別的話主要是訪問和修改許可權:
第1種,屬性在類內、類外、子類都是可以訪問和修改的,子類如果在不知道父類有此屬性的話很容易造成覆蓋;
第2種的話,訪問許可權和第1種一樣,不過為了防止子類意外覆蓋父類屬性,約定俗成的名義上的「私有屬性」,意思就是大家把帶乙個下劃線的屬性當成私有的,盡量不在類外去訪問和修改它。
第3種是真正的私有屬性,類內可以訪問,但是類外和子類繼承都不能直接訪問(其實可以通過引用父類類名來進行訪問,原因是子類繼承父類的私有屬性時,其實只是把屬性名字給改了),子類要訪問的父類的私有屬性的話,一般要父類裡設定了方法來訪問
: self.__name = name # 私有成員在子類中不能直接通過self呼叫,可以通過繼承公共方法呼叫
self.__age = age
self.__gender = gender
defget_name
(self)
:return self.__name
defrun(self)
('the animal '
+ self.get_name()+
' is running...'
)def
info
(self)
:# 輸出相關資訊
('my info is: '
('name: '
+ self.get_name())
('age: '
+ self.__age)
if self.__gender:
('gender: female'
)else
('gender: male'
)class
dog(animal)
:def
__init__
(self, name, age=
'1', gender=
0, weight=10)
:super
(dog, self)
.__init__(name, age, gender)
self.__weight = weight
defrun(self)
('the dog '
+ self.get_name()+
' is running...'
)def
run(animal)
: animal.run(
)if __name__ ==
'__main__'
: an = animal(
'blake'
) dog = dog(
'haki'
) run(an)
run(dog)
python 類 繼承 python 類的繼承
1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...
Python類繼承和多型原理解析
現在屬於是老年人的腦子,東西寫著寫著就忘了,東西記著記著就不知道了。之前學c 的時候就把類 物件這塊弄得亂七八糟,現在是因為很想玩python,所以就看看python的類和物件。就像說的,類有三個特徵 封裝 繼承 多型。1 封裝 類封裝了一些方法,可通過一定的規則約定方法進行訪問許可權。c 中的成員...
python繼承分類 python 類與繼承
類的繼承 什麼是繼承?繼承是一種新建類的方式,新建的類稱為子類,被繼承的類稱為父類。python中,父類 子類 派生類 只有在繼承的時候才會產生。繼承的特性 子類會繼承父類所有的屬性。為什麼要用繼承?使用繼承可以減少 的冗餘。物件的繼承 python中支援乙個類同時繼承多個父類 不推薦使用,當繼承多...