python 類繼承原理

2021-10-05 17:16:05 字數 2286 閱讀 9141

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)

:print

('the animal '

+ self.get_name()+

' is running...'

)def

info

(self)

:# 輸出相關資訊

print

('my info is: '

)print

('name: '

+ self.get_name())

print

('age: '

+ self.__age)

if self.__gender:

print

('gender: female'

)else

:print

('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)

:print

('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中支援乙個類同時繼承多個父類 不推薦使用,當繼承多...