日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python编程课件_Python面向对象程序设计ppt课件.ppt

發(fā)布時間:2024/8/1 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python编程课件_Python面向对象程序设计ppt课件.ppt 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《Python面向?qū)ο蟪绦蛟O(shè)計(jì)ppt課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《Python面向?qū)ο蟪绦蛟O(shè)計(jì)ppt課件.ppt(40頁珍藏版)》請?jiān)谌巳宋膸炀W(wǎng)上搜索。

1、第6章 面向?qū)ο蟪绦蛟O(shè)計(jì)1面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OOP)的思想主要針對大型軟件設(shè)計(jì)而提出,使得軟件設(shè)計(jì)更加靈活,能夠很好地支持代碼復(fù)用和設(shè)計(jì)復(fù)用,并且使得代碼具有更好的可讀性和可擴(kuò)展性。面向?qū)ο蟪绦蛟O(shè)計(jì)的一條基本原則是計(jì)算機(jī)程序由多個能夠起到子程序作用的單元或?qū)ο蠼M合而成,這大大地降低了軟件開發(fā)的難度,使得編程就像搭積木一樣簡單。面向?qū)ο蟪绦蛟O(shè)計(jì)的一個關(guān)鍵性觀念是將數(shù)據(jù)以及對數(shù)據(jù)的操作封裝在一起,組成一個相互依存、不可分割的整體,即對象。對于相同類型的對象進(jìn)行分類、抽象后,得出共同的特征而形成了類,面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵就是如何合理地定義和組。

2、織這些類以及類之間的關(guān)系。,2Python完全采用了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,是真正面向?qū)ο蟮母呒墑討B(tài)編程語言,完全支持面向?qū)ο蟮幕竟δ?#xff0c;如封裝、繼承、多態(tài)以及對基類方法的覆蓋或重寫。但與其他面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同的是,Python中對象的概念很廣泛,Python中的一切內(nèi)容都可以稱為對象例如,字符串、列表、字典、元組等內(nèi)置數(shù)據(jù)類型都具有和類完全相似的語法和用法。創(chuàng)建類時用變量形式表示的對象屬性稱為數(shù)據(jù)成員或成員屬性,用函數(shù)形式表示的對象行為稱為成員函數(shù)或成員方法,成員屬性和成員方法統(tǒng)稱為類的成員。,3,6.1.1 類定義語法,Python使用class關(guān)鍵字來定義類,class關(guān)鍵字之后是。

3、一個空格,然后是類的名字,再然后是一個冒號,最后換行并定義類的內(nèi)部實(shí)現(xiàn)。類名的首字母一般要大寫,當(dāng)然您也可以按照自己的習(xí)慣定義類名,但是一般推薦參考慣例來命名,并在整個系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)中保持風(fēng)格一致,這一點(diǎn)對于團(tuán)隊(duì)合作尤其重要。例如 class Car 新式類必須有至少一個基類 def inforself print This is a car ,4,6.1.1 類定義語法,定義了類之后,可以用來實(shí)例化對象,并通過“對象名.成員”的方式來訪問其中的數(shù)據(jù)成員或成員方法,例如下面的代碼 car Car car.infor This is a car 在Python中,可以使用內(nèi)置方法isinst。

4、ance來測試一個對象是否為某個類的實(shí)例,下面的代碼演示了isinstance的用法。 isinstancecar, Car True isinstancecar, str False,5,6.1.1 類定義語法,最后,Python提供了一個關(guān)鍵字“pass”,類似于空語句,可以用在類和函數(shù)的定義中或者選擇結(jié)構(gòu)中。當(dāng)暫時沒有確定如何實(shí)現(xiàn)功能,或者為以后的軟件升級預(yù)留空間,或者其他類型功能時,可以使用該關(guān)鍵字來“占位”。例如下面的代碼都是合法 class A pass def demo pass if 53 pass,6,6.1.2 self參數(shù),類的所有實(shí)例方法都必須至少有一個名為“self”。

5、的參數(shù),并且必須是方法的第一個形參(如果有多個形參的話),“self”參數(shù)代表將來要創(chuàng)建的對象本身。在類的實(shí)例方法中訪問實(shí)例屬性時需要以“self”為前綴,但在外部通過對象名調(diào)用對象方法時并不需要傳遞這個參數(shù),如果在外部通過類名調(diào)用對象方法則需要顯式為self參數(shù)傳值。,7,6.1.2 self參數(shù),在Python中,在類中定義實(shí)例方法時將第一個參數(shù)定義為“self”只是一個習(xí)慣,而實(shí)際上類的實(shí)例方法中第一個參數(shù)的名字是可以變化的,而不必須使用“self”這個名字,例如下面的代碼 class A def inithahaha, v hahaha.value v def showhahaha 。

6、printhahaha.value a A3 a.show 3,8,6.1.3 類成員與實(shí)例成員,這里主要指數(shù)據(jù)成員,或者廣義上的屬性。可以說屬性有兩種,一種是實(shí)例屬性,另一種是類屬性。實(shí)例屬性一般是指在構(gòu)造函數(shù)init中定義的,定義和使用時必須以self作為前綴;類屬性是在類中所有方法之外定義的數(shù)據(jù)成員。在主程序中(或類的外部),實(shí)例屬性屬于實(shí)例對象,只能通過對象名訪問;而類屬性屬于類,可以通過類名或?qū)ο竺L問。,9,6.1.3 類成員與實(shí)例成員,在類的方法中可以調(diào)用類本身的其他方法,也可以訪問類屬性以及對象屬性。在Python中比較特殊的是,可以動態(tài)地為類和對象增加成員,這一點(diǎn)是和很多面。

7、向?qū)ο蟪绦蛟O(shè)計(jì)語言不同的,也是Python動態(tài)類型特點(diǎn)的一種重要體現(xiàn)。,10,6.1.3 類成員與實(shí)例成員,class Car price 100000 定義類屬性 def initself, c self.color c 定義實(shí)例屬性 car1 CarRed car2 CarBlue printcar1.color, Car.price Car.price 110000 修改類屬性 Car.name QQ 增加類屬性 car1.color Yellow 修改實(shí)例屬性 printcar2.color, Car.price, Car.name printcar1.color, Ca。

8、r.price, Car.name def setSpeedself, s self.speed s car1.setSpeed types.TypesetSpeed, Car 動態(tài)為對象增加成員方法 car1.setSpeed50 調(diào)用對象的成員方法 printcar1.speed,11,6.1.3 類成員與實(shí)例成員,在Python中,函數(shù)和方法是有區(qū)別的。方法一般指與特定實(shí)例綁定的函數(shù),通過對象調(diào)用方法時,對象本身將被作為第一個參數(shù)傳遞過去,普通函數(shù)并不具備這個特點(diǎn)。 class Demo pass t Demo def testself, v self.value v t.tes。

9、t test t.test t.testt, 3 printt.value 3 t.test types.Typetest, t t.test t.test5 printt.value 5,12,6.1.4 私有成員與公有成員,Python并沒有對私有成員提供嚴(yán)格的訪問保護(hù)機(jī)制。在定義類的屬性時,如果屬性名以兩個下劃線“”開頭則表示是私有屬性,否則是公有屬性。私有屬性在類的外部不能直接訪問,需要通過調(diào)用對象的公有成員方法來訪問,或者通過Python支持的特殊方式來訪問。Python提供了訪問私有屬性的特殊方式,可用于程序的測試和調(diào)試,對于成員方法也具有同樣的性質(zhì)。 私有屬性是為了數(shù)據(jù)封裝和。

10、保密而設(shè)的屬性,一般只能在類的成員方法(類的內(nèi)部)中使用訪問,雖然Python支持一種特殊的方式來從外部直接訪問類的私有成員,但是并不推薦您這樣做。公有屬性是可以公開使用的,既可以在類的內(nèi)部進(jìn)行訪問,也可以在外部程序中使用。,13,6.1.4 私有成員與公有成員, class A def initself, value1 0, value2 0 self._value1 value1 self.value2 value2 def setValueself, value1, value2 self._value1 value1 self.value2 value2 def shows。

11、elf printself._value1 printself.value2 a A a._value1 0 a._Avalue2 在外部訪問對象的私有數(shù)據(jù)成員 0,14,6.1.4 私有成員與公有成員,在IDLE環(huán)境中,在對象或類名后面加上一個圓點(diǎn)“.”,稍等一秒鐘則會自動列出其所有公開成員,模塊也具有同樣的特點(diǎn)。 而如果在圓點(diǎn)“.”后面再加一個下劃線,則會列出該對象或類的所有成員,包括私有成員。,15,6.1.4 私有成員與公有成員,在Python中,以下劃線開頭的變量名和方法名有特殊的含義,尤其是在類的定義中。用下劃線作為變量名和方法名前綴和后綴來表示類的特殊成員 _xxx這樣的對象叫。

12、做保護(hù)成員,不能用from module import *導(dǎo)入,只有類對象和子類對象能訪問這些成員; xxx系統(tǒng)定義的特殊成員; xxx類中的私有成員,只有類對象自己能訪問,子類對象也不能訪問到這個成員,但在對象外部可以通過“對象名._類名xxx”這樣的特殊方式來訪問。Python中不存在嚴(yán)格意義上的私有成員。,16,6.1.4 私有成員與公有成員,另外,在IDLE交互模式下,一個下劃線“_”表示解釋器中最后一次顯示的內(nèi)容或最后一次語句正確執(zhí)行的輸出結(jié)果。例如 3 5 8 _ 2 10 _ * 3 30 _ / 5 6 3 3 1/0 Traceback most recent call 。

13、last File , line 1, in 1/0 ZeroDivisionError integer division or modulo by zero _ 3,17,6.1.4 私有成員與公有成員, class Fruit def initself self.color Red self.price 1 apple Fruit apple.price 顯示對象公開數(shù)據(jù)成員的值 1 apple.price 2 修改對象公開數(shù)據(jù)成員的值 apple.price 2 printapple.price, apple._Fruitcolor 顯示對象私有數(shù)據(jù)成員的值 2 Red appl。

14、e._Fruitcolor Blue 修改對象私有數(shù)據(jù)成員的值 printapple.price, apple._Fruitcolor 2 Blue printapple.color 不能直接訪問對象的私有數(shù)據(jù)成員,出錯 AttributeError Fruit instance has no attribute color,18,6.2 方法,在類中定義的方法可以粗略分為四大類公有方法、私有方法、靜態(tài)方法和類方法。其中,公有方法、私有方法都屬于對象,私有方法的名字以兩個下劃線“”開始,每個對象都有自己的公有方法和私有方法,在這兩類方法中可以訪問屬于類和對象的成員;公有方法通過對象名直接調(diào)用。

15、,私有方法不能通過對象名直接調(diào)用,只能在屬于對象的方法中通過“self”調(diào)用或在外部通過Python支持的特殊方式來調(diào)用。如果通過類名來調(diào)用屬于對象的公有方法,需要顯式為該方法的“self”參數(shù)傳遞一個對象名,用來明確指定訪問哪個對象的數(shù)據(jù)成員。靜態(tài)方法和類方法都可以通過類名和對象名調(diào)用,但不能直接訪問屬于對象的成員,只能訪問屬于類的成員。一般將“cls”作為類方法的第一個參數(shù)名稱,但也可以使用其他的名字作為參數(shù),并且在調(diào)用類方法時不需要為該參數(shù)傳遞值。,19,6.2 方法,20,6.2 方法, r Root3 r.classShowTotal 通過對象來調(diào)用類方法 1 r.staticSh。

16、owTotal 通過對象來調(diào)用靜態(tài)方法 1 r.show self.value 3 Root.total 1 rr Root5 Root.classShowTotal 通過類名調(diào)用類方法 2 Root.staticShowTotal 通過類名調(diào)用靜態(tài)方法 2,21,6.2 方法, Root.show 試圖通過類名直接調(diào)用實(shí)例方法,失敗 TypeError unbound show must be called with Root instance as first argument got nothing instead Root.showr 但是可以通過這種方法來調(diào)用方法并訪問實(shí)例成員 。

17、self.value 3 Root.total 2 r.show self.value 3 Root.total 2 Root.showrr 通過類名調(diào)用實(shí)例方法時為self參數(shù)顯式傳遞對象名 self.value 5 Root.total 2 rr.show self.value 5 Root.total 2,22,6.3 屬性,Python 2.x和Python 3.x對屬性的實(shí)現(xiàn)和處理方式不一樣,內(nèi)部實(shí)現(xiàn)有較大的差異,使用時應(yīng)注意二者之間的區(qū)別。,23,6.3.2 Python 3.x中的屬性,在Python 3.x中,屬性得到了較為完整的實(shí)現(xiàn),支持更加全面的保護(hù)機(jī)制。例如下面的代碼所示。

18、,如果設(shè)置屬性為只讀,則無法修改其值,也無法為對象增加與屬性同名的新成員,同時,也無法刪除對象屬性。,24,6.3.2 Python 3.x中的屬性, class Test def initself, value self.value value property def valueself 只讀,無法修改和刪除 return self.value t Test3 t.value 3 t.value 5 只讀屬性不允許修改值 AttributeError cant set attribute t.v5 動態(tài)增加新成員 t.v 5 del t.v 動態(tài)刪除成員 del t.value 試圖。

19、刪除對象屬性,失敗 AttributeError cant delete attribute t.value 3,25,6.3.2 Python 3.x中的屬性,下面的代碼則把屬性設(shè)置為可讀、可修改,而不允許刪除。 class Test def initself, value self.value value def getself return self.value def setself, v self.value v value propertyget, set def showself printself.value t Test3 t.value 允許讀取屬性值 3 t.va。

20、lue 5 允許修改屬性值 t.value 5 t.show 屬性對應(yīng)的私有變量也得到了相應(yīng)的修改 5 del t.value 試圖刪除屬性,失敗 AttributeError cant delete attribute,26,6.3.2 Python 3.x中的屬性,也可以將屬性設(shè)置為可讀、可修改、可刪除。 class Test def initself, value self.value value def getself return self.value def setself, v self.value v def delself del self.value value p。

21、ropertyget, set, del def showself printself.value,27,6.3.2 Python 3.x中的屬性, t Test3 t.show 3 t.value 3 t.value 5 t.show 5 t.value 5 del t.value t.value AttributeError Test object has no attribute _Testvalue t.show AttributeError Test object has no attribute _Testvalue t.value 1 為對象動態(tài)增加屬性和對應(yīng)的私有數(shù)據(jù)成員 。

22、t.show 1 t.value 1,28,6.4.1 常用特殊方法,Python類有大量的特殊方法,其中比較常見的是構(gòu)造函數(shù)和析構(gòu)函數(shù)。Python中類的構(gòu)造函數(shù)是init,一般用來為數(shù)據(jù)成員設(shè)置初值或進(jìn)行其他必要的初始化工作,在創(chuàng)建對象時被自動調(diào)用和執(zhí)行,可以通過為構(gòu)造函數(shù)定義默認(rèn)值參數(shù)來實(shí)現(xiàn)類似于其他語言中構(gòu)造函數(shù)重載的目的。如果用戶沒有設(shè)計(jì)構(gòu)造函數(shù),Python將提供一個默認(rèn)的構(gòu)造函數(shù)用來進(jìn)行必要的初始化工作。Python中類的析構(gòu)函數(shù)是del,一般用來釋放對象占用的資源,在Python刪除對象和收回對象空間時被自動調(diào)用和執(zhí)行。如果用戶沒有編寫析構(gòu)函數(shù),Python將提供一個默認(rèn)的析構(gòu)。

23、函數(shù)進(jìn)行必要的清理工作。,29,6.4.1 常用特殊方法,30,6.4.2 案例精選,在MyArray.py文件中,定義了一個數(shù)組類,重寫了一部分特殊方法以支持?jǐn)?shù)組之間、數(shù)組與整數(shù)之間的四則運(yùn)算以及內(nèi)積、大小比較、成員測試和元素訪問等運(yùn)算符。,31,6.4.2 案例精選, import MyArray a MyArray.MyArray1, 2, 3, 4, 5, 6 b MyArray.MyArray6, 5, 4, 3, 2, 1 lena 6 a.dotb 56 a a b False a a True 3 in a True,32,6.4.2 案例精選, a * 3 3, 6, 9。

24、, 12, 15, 18 a 2 3, 4, 5, 6, 7, 8 a 2 1, 4, 9, 16, 25, 36 a / 2 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 a 1, 2, 3, 4, 5, 6 a0 8 a 8, 2, 3, 4, 5, 6,33,6.5 繼承機(jī)制,繼承是為代碼復(fù)用和設(shè)計(jì)復(fù)用而設(shè)計(jì)的,是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特性之一。當(dāng)我們設(shè)計(jì)一個新類時,如果可以繼承一個已有的設(shè)計(jì)良好的類然后進(jìn)行二次開發(fā),無疑會大幅度減少開發(fā)工作量。在繼承關(guān)系中,已有的、設(shè)計(jì)好的類稱為父類或基類,新設(shè)計(jì)的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。

25、。如果需要在派生類中調(diào)用基類的方法,可以使用內(nèi)置函數(shù)super或者通過“基類名.方法名”的方式來實(shí)現(xiàn)這一目的。 Python支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將從左向右按順序進(jìn)行搜索。,34,6.5 繼承機(jī)制,例1設(shè)計(jì)Person類,并根據(jù)Person派生Teacher類,分別創(chuàng)建Person類與Teacher類的對象。 import types class Personobject 基類必須繼承于object,否則在派生類中將無法使用super函數(shù) def initself, name , age 20, sex man self。

26、.setNamename self.setAgeage self.setSexsex def setNameself, name if typename types.StringType print name must be string. return self.name name def setAgeself, age if typeage types.IntType print age must be integer. return self.age age def setSexself, sex if sex man and sex woman print sex must。

27、 be man or woman return self.sex sex def showself print self.name print self.age print self.sex,35,6.5 繼承機(jī)制,class TeacherPerson def initself, name, age 30, sex man, department Computer 調(diào)用基類構(gòu)造方法初始化基類的私有數(shù)據(jù)成員 superTeacher, self.initname, age, sex Person.initself, name, age, sex 也可以這樣初始化基類的私有數(shù)據(jù)成員 se。

28、lf.setDepartmentdepartment 初始化派生類的數(shù)據(jù)成員 def setDepartmentself, department if typedepartment types.StringType print department must be a string. return self.department department def showself superTeacher, self.show print self.department,36,6.5 繼承機(jī)制,if name main zhangsan PersonZhang San, 19, man zh。

29、angsan.show lisi TeacherLi Si, 32, man, Math lisi.show lisi.setAge40 調(diào)用繼承的方法修改年齡 lisi.show,37,6.5 繼承機(jī)制,為了更好地理解Python類的繼承機(jī)制,我們來看下面的Python 2.7.11代碼,請認(rèn)真體會構(gòu)造函數(shù)、私有方法以及普通公開方法的繼承原理。 class A def initself self.private self.public def privateself print private of A def publicself print public of A class BA。

30、 def privateself print private of B def publicself print public of B,38,6.5 繼承機(jī)制, b B 自動調(diào)用從基類A繼承的構(gòu)造函數(shù) private of A public of B print n.joindirb 查看對象b的成員 _Aprivate _Bprivate doc init module Public,39,6.5 繼承機(jī)制, class CA def initself self.private self.public def privateself print private of C def publicself print public of C c C 自動調(diào)用派生類自己的構(gòu)造函數(shù) private of C public of C print n.joindirc _Aprivate _Cprivate doc init module public,40,。

總結(jié)

以上是生活随笔為你收集整理的python编程课件_Python面向对象程序设计ppt课件.ppt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。