8 3 類的繼承

2021-10-08 07:24:58 字數 2633 閱讀 6268

物件導向的最大優點之一就是可以通過繼承來減少**,同時靈活地定製新類。

子類繼承父類後,就有了父類的屬性和方法,除了父類的私有屬性和私有方法(屬性名或方法名前面有兩個下劃線"__"的),子類中還可以通過過載來修改父類的方法,以實現與父類不同的行為或表現能力。

例六:

class

ant:

def__init__

(self, x=

0, y=

0,color=

'black'):

#定義構造方法

self.x = x

self.y = y

self.color = color

defcrawl

(self, x, y)

:#定義方法,模擬爬行

self.x = x

self.y = y

print

('爬行...'

) self.info(

)def

info

(self)

:print

('當前位置:(%d, %d)'

%(self.x, self.y)

)def

attack

(self)

:#定義方法,模擬攻擊

print

('用嘴咬!'

)class

flyant

(ant)

:#定義子類,繼承def的父類是ant類

defattack

(self)

:#重新定義了函式attack(),這叫函式過載

print

('用尾針!'

)def

fly(self, x, y)

:#定義新方法(模擬飛行)

print

('飛行...'

) self.x = x

self.y = y

self.info(

)

flyant = flyant(color=

'red'

)#例項化子類,

flyant.crawl(3,

5)flyant.fly(10,

14)flyant.attack(

)

輸出:

爬行...

當前位置:(3,

5)飛行..

.當前位置:(10,

14)用尾針!

**說明:

程式一開始定義了父類ant,具有爬行、用嘴咬的能力,之後定義了子類flyant,子類繼承了父類爬行的能力,修改了攻擊方式,新增了飛行能力。之後例項化呼叫其爬行、飛行、進攻方式。

在物件導向程式設計的語言中,有的允許多重繼承,即乙個類可以繼承多個類,有的只允許單一繼承;python則允許多重繼承。

多重繼承的形式:

class

《子類名》

(父類名1

, 父類名2,.

..):

pass

多重繼承的繼承順序很重要,如果繼承的父類有多個相同的方法名(包括構造方法),但在類中使用時未指定父名,則python從左到右搜尋,即呼叫先繼承的類中的同名的方法。

例七:先定義類:

classa:

#定義類a

definfo

(self)

:print

('a'

)classb:

#定義類b

definfo

(self)

:print

('b'

)class

c1(a, b)

:#定義子類c1

pass

class

c2(b, a)

:#定義子類c2

pass

class

c3(a, b)

:#定義子類c3

definfo

(self)

: a.info(self)

b.info(self)

例項化:

c_1 = c1(

)c_1.info(

)print

('**************************'

)c_2 = c2(

)c_2.info(

)print

('**************************'

)c_3 = c3(

)c_3.info(

)

輸出:

a

**************************

b**************************

ab

**分析:

上面已經多次提到過函式過載,這裡再詳細說下。

當子類繼承父類時,子類如果要想修改父類的行為,則應使用方法過載來實現。

方法過載的基本方式:在子類中定義乙個與所繼承的父類中要過載方法的名字一樣的方法。(即定義的方法名要與被過載的方法的名字一樣)

8 3 多重繼承與派生類成員標識

由多個基類共同派生出派生類的繼承結構稱為 多重繼承 或多繼承 multiple inheritance 多重繼承是從實際的需要產生的。例如 從大學在冊人員產生學生和教職工。再從學生派生研究生。如果考慮到研究生可以當助教,那麼他們又有了教職工的特性。教職工可分為教師和行政人員,但行政人員也可以去授課,...

8 3 定義模型類

接下來首先以 圖書 英雄 管理為例進行演示。建立應用booktest,在models.py 檔案中定義模型類。from django.db import models 定義圖書模型類bookinfo class bookinfo models.model btitle models.charfiel...

python 類 繼承 python 類的繼承

1 所用的類都可以被繼承 2 沒有繼承其他類的類必然有乙個父類 object 3子類可以擁有父類的 init 裡的類容 派生子類除了父類的一些屬性,還會有自己的屬性和方法,這些就叫派生 如何使用 實現 class animal def init self,name,attack,hp self.na...