《Python程序設(shè)計案例教程》 課件 6.3封裝、繼承和多態(tài)_第1頁
《Python程序設(shè)計案例教程》 課件 6.3封裝、繼承和多態(tài)_第2頁
《Python程序設(shè)計案例教程》 課件 6.3封裝、繼承和多態(tài)_第3頁
《Python程序設(shè)計案例教程》 課件 6.3封裝、繼承和多態(tài)_第4頁
《Python程序設(shè)計案例教程》 課件 6.3封裝、繼承和多態(tài)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python編程基礎(chǔ)封裝、繼承和多態(tài)封裝是面向?qū)ο蟮闹匾匦灾唬幕舅枷胧菍ν怆[藏類的細節(jié),提供用于訪問類成員的公開接口。這樣,類的外部無需知道類的實現(xiàn)細節(jié),只需要使用公開接口便可訪問類的內(nèi)容,這在一定程度上保證了類內(nèi)數(shù)據(jù)的安全。為了契合封裝思想,我們在定義類時需要滿足兩點要求:1.將類屬性聲明為私有屬性;2.添加兩個供外界調(diào)用的公有方法,分別用于設(shè)置或獲取私有屬性的值。封裝在Python中,私有成員需在變量名字前加兩個下劃線“__”,私有方法需在方法名字前加兩個下劃線“__”。私有成員只有類對象自己能訪問,子類對象不能直接訪問到這個成員,但在對象外部可以通過“對象名._類名__xxx”這樣的特殊方式來訪問。私有方法不能通過對象名直接調(diào)用,只能在屬于對象的方法中通過self調(diào)用或在外部通過Python支持的特殊方式來調(diào)用。對于這一層面的私有(隱藏),我們需要在類中定義一個公有方法(也稱接口函數(shù)),在它內(nèi)部訪問被私有化的數(shù)據(jù)成員和方法,然后外部可以通過接口函數(shù)進行訪問。封裝【例】封裝示例。classA: #定義類

def__init__(self):self.__X=10 #定義私有成員并賦值為10def__foo(self): #定義私有方法

print('fromA')defbar(self): #定義公有方法(接口函數(shù))

self.__foo() #在類內(nèi)部訪問私有方法

returnself.__X #返回私有變量__X的值a=A() #創(chuàng)建對象b=a.bar() #調(diào)用公有方法(接口函數(shù)),將返回值賦給bprint(b) #輸出b的值【運行結(jié)果】10fromA封裝注意:Python目前的私有機制其實是偽私有,實際上,在外部可以通過“_類名__屬性”訪問私有變量和方法。繼承是面向?qū)ο蟮闹匾匦灾?,它主要用于描述類與類之間的關(guān)系,可以在不改變原有類的基礎(chǔ)上擴展原有類的功能。如果類和類之間具有繼承關(guān)系,那么被繼承的類稱為父類或基類,繼承其他類的類則稱為子類或派生類。繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。繼承在Python中,繼承可以分為單繼承和多繼承。單繼承是指一個子類只有一個父類。子類的定義如下所示。class子類名(父類名):多繼承是指一個類有多個直接父類。其語法格式如下所示。class子類名(父類名1,父類名2…):注意:子類可以繼承父類的所有公有成員和公有方法,但不能繼承父類的私有成員和私有方法。繼承所謂多態(tài)(polymorphism),是指父類的同一個方法在不同子類對象中具有不同的表現(xiàn)和行為。子類繼承了父類方法和屬性之后,還會增加某些特定的方法和屬性,同時還可能會對繼承來的某些行為進行一定的改變,這都是多態(tài)的表現(xiàn)形式。多態(tài)classAnimal:#定義Animal類

def__init__(self,name):#構(gòu)造方法,定義name=name

defshow(self):#定義show()方法

print('動物名稱是{}'.format())classTiger(Animal):#定義Tiger類,繼承Animal類

def__init__(self,name,type):#重寫構(gòu)造方法

super().__init__(name)self.type=type

defshow(self):#重寫show()方法

print('動物名稱是{},種類是{}'.format(,self.type))classPanda(Animal):#定義Panda類,繼承Animal類

def__init__(self,name,age):#重寫構(gòu)造方法

super().__init__(name)self.age=agedefshow(self): #重寫show()方法

print('動物名稱是{},年齡是{}'.format(,self.age))defshowInfo(obj):#定義函數(shù)用于接收對象,只要傳入的obj對象具有show()方法

obj.show() #調(diào)用show()方法#創(chuàng)建對象cat=Animal('貓')tiger=Tiger('老虎','東北虎')panda=Panda('熊貓','3歲')#

溫馨提示

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

評論

0/150

提交評論