信息技術(shù):110Python繼承機(jī)制及其使用_第1頁
信息技術(shù):110Python繼承機(jī)制及其使用_第2頁
信息技術(shù):110Python繼承機(jī)制及其使用_第3頁
信息技術(shù):110Python繼承機(jī)制及其使用_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Python繼承機(jī)制及其使用Python類的封裝、繼承、多態(tài)3大特性,前面章節(jié)已經(jīng)詳細(xì)介紹了 Python類的封裝, 本節(jié)繼續(xù)講解Python類的繼承機(jī)制。繼承機(jī)制經(jīng)常用于創(chuàng)立和現(xiàn)有類功能類似的新類,又或是新類只需要在現(xiàn)有類基礎(chǔ)上添加一 些成員(屬性和方法),但又不想直接將現(xiàn)有類代碼復(fù)制給新類。也就是說,通過使用繼承 這種機(jī)制,可以輕松實(shí)現(xiàn)類的重復(fù)使用。舉個(gè)例子,假設(shè)現(xiàn)有一個(gè)Shape類,該類的draw()方法可以在屏幕上畫出指定的形狀, 現(xiàn)在需要?jiǎng)?chuàng)立一個(gè)Form類,要求此類不但可以在屏幕上畫出指定的形狀,還可以計(jì)算出 所畫形狀的面積。要?jiǎng)?chuàng)立這樣的類,笨方法是將draw()方法直接復(fù)制到新類中

2、,并添加計(jì) 算面積的方法。實(shí)現(xiàn)代碼如下所示:class Shape:def draw(self,content):print(畫content)class Form:def draw(self,content):print(畫content)def area(self):print(此圖形的面積為.”)當(dāng)然還有更簡(jiǎn)單的方法,就是使用類的繼承機(jī)制。實(shí)現(xiàn)方法為讓From類繼承Shape類, 這樣當(dāng)From類對(duì)象調(diào)用draw()方法時(shí),Python解釋器會(huì)先去From中找以draw 為名的方法,如果找不到,它還會(huì)自動(dòng)去Shape類中找。如此,我們只需在From類中添加計(jì)算面積的方法即可,例如代碼如下

3、:class Shape:def draw(seltcontent):print(畫)content)class Form(Shape):def area(self):print(此圖形的面積為.”)上面代碼中,class From(Shape)就表示 From 繼承 Shape。Python中,實(shí)現(xiàn)繼承的類稱為子類,被繼承的類稱為父類(也可稱為基類、超類)。因此 在上面這個(gè)樣例中,F(xiàn)rom是子類,Shape是父類。子類繼承父類時(shí),只需在定義子類時(shí),將父類(可以是多個(gè))放在子類之后的圓括號(hào)里即可。 語法格式如下:class類名(父類L父類2,.):#類定義局部注意,如果該類沒有顯式指定繼承自哪

4、個(gè)類,那么默認(rèn)繼承object類(object 類是Python中所有類的父類,即要么是直接父類,要么是間接父類)。另外,Python的繼承是多繼承機(jī)制(和C+ 一樣),即一個(gè)子類可以同 時(shí)擁有多個(gè)直接父類。注意,有讀者可能還聽說過派生這個(gè)詞匯,它和繼承是一個(gè)意思,只是觀察角度不同而 已。換句話話,繼承是相對(duì)子類來說的,即子類繼承自父類;而派生是相對(duì)于父類來說的,即父類派生出子類。了解了繼承機(jī)制的含義和語法之后,下面代碼演示了繼承機(jī)制的用法:class People:def say(self):print(我是一個(gè)人,名字是:,)class Animal:def displa

5、y(self):print(”人也是高級(jí)動(dòng)物”)#同時(shí)繼承People和Animal類#其同時(shí)擁有name屬性、say()和display()方法class Person(People, Animal):passzhangsan = Personf) =張三zhangsan.say()zhangsan.display()運(yùn)行結(jié)果,結(jié)果為:我是一個(gè)人,名字是:張三人也是高級(jí)動(dòng)物可以看到,雖然Person類為空類,但由于其繼承自People和Animal這2個(gè)類,因 此實(shí)際上Person并不空,它同時(shí)擁有這2個(gè)類所有的屬性和方法。沒錯(cuò),子類擁有父類所有的屬性和方法,即便該

6、屬性或方法是私有(private )的。至于為什么,可閱讀Python封裝實(shí)現(xiàn)原理一節(jié)。關(guān)于Python的多繼承 事實(shí)上,大局部面向?qū)ο蟮木幊陶Z言,都只支持單繼承,即子類有且只能有一個(gè)父類。而 Python卻支持多繼承(C+也支持多繼承)。和單繼承相比,多繼承容易讓代碼邏輯復(fù)雜、思路混亂,一直備受爭(zhēng)議,中小型工程中較少 使用,后來的Java、C#、PHP等干脆取消了多繼承。使用多繼承經(jīng)常需要面臨的問題是,多個(gè)父類中包含同名的類方法。對(duì)于這種情況,Python 的處置措施是:根據(jù)子類繼承多個(gè)父類時(shí)這些父類的前后次序決定,即排在前面父類中的類 方法會(huì)覆蓋排在后面父類中的同名類方法。舉個(gè)例子:cla

7、ss People:def_init_(self):self, name = Peopledef say(self):print(People 類,)class Animal:def_init_(self): = Animaldef say(self):print(Animal 類”,)#People中的name屈性和say()會(huì)遮蔽Animal類中的class Person(People, Animal):passzhangsan = Person() =張三zhangsan.say()程序運(yùn)行結(jié)果為:People類張三可以看到,當(dāng)Pers

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論