Python程序設計 第8章 面向對象程序設計1(第11次課)_第1頁
Python程序設計 第8章 面向對象程序設計1(第11次課)_第2頁
Python程序設計 第8章 面向對象程序設計1(第11次課)_第3頁
Python程序設計 第8章 面向對象程序設計1(第11次課)_第4頁
Python程序設計 第8章 面向對象程序設計1(第11次課)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機編程導論計算機編程導論 課程建設組課程建設組 編著編著2014.2014.1111 為了解決大型軟件設計危機,在20世紀80年代提出了面向對象程序設計(object oriented programming, OOP)。面向對象程序設計是一種新的編程模式,這種編程模式的中心不再是程序的邏輯流程,而是軟件或程序中的對象以及對象之間的關系。面向對象程序設計是針對大型軟件的設計而提出的,它能使功能相對獨立,能很好地做到代碼重用,能使軟件易于維護。 【問題問題8-1】定義一個類代表三角形,類中含三條邊、求周長的函數(shù),求面積的函數(shù)。然后用這個類生成一個等邊三角形,一個直角三角形,依次求其周長及面積

2、。程序:程序: #Ques8_1.pyclass Triangle: def _init_(self, x, y, z): self.a=x self.b=y self.c=z def area(self): s=(self.a+self.b+self.c)/2 return (s*(s-self.a)*(s-self.b)*(s-self.c)*(1.0/2) def perimeter(self): return self.a+self.b+self.c#主程序t1=Triangle(6, 6, 6) #等邊三角形是t1,t1也稱對象t2=Triangle(3, 4, 5)print 等邊

3、三角形的三條邊:, t1.a, t1.b, t1.cprint 等邊三角形的周長:, t1.perimeter()print 等邊三角形的面積:, t1.area()print 直角三角形的三條邊:, t2.a, t2.b, t2.c print 直角三角形的周長:, t2.perimeter()print 直角三角形的面積:,t2.area()程序運行結果:程序運行結果:等邊三角形的三條邊: 6 6 6等邊三角形的周長: 18等邊三角形的面積: 15.588457268119896直角三角形的三條邊: 3 4 5直角三角形的周長: 12直角三角形的面積: 6.08.2.1 類和對象類和對象

4、創(chuàng)建類時用變量表示屬性用變量表示屬性稱為成員變量成員變量或成員屬性,用函數(shù)表示方法用函數(shù)表示方法稱為成員函數(shù)或成員方法成員方法,成員屬性和成員方法都稱為類的成員成員。類Triangle有哪些成員變量?哪些成員方法? 1. 類和對象的區(qū)別類和對象的區(qū)別 類是客觀世界中事物的抽象,而對象是類實例化后的變量。例如,建房圖紙可以建造出不同的房子,建房圖紙是類,不是真實的房子,而建造出的每間房子都是對象。2. 類的定義類的定義 Python使用class保留字來定義類,類名的首字母一般要大寫。如,class Car:def infor(self):print( This is a car ) 類的方法至

5、少有一個參數(shù)self,self代表將來要創(chuàng)建的對象本身。在類的方法中訪問類的實例屬性時需要以self為前綴(下面將學習)。8.2.2 實例屬性和類屬性實例屬性和類屬性屬性有兩種,一種是實例屬性,另一種是類屬性。實例屬性是在構造函數(shù)_init_中定義的,定義時以self作為前綴;類屬性是在類中方法之外定義的屬性。在主程序中(在類的的外部),實例屬性屬于實例(對象)只能通過對象名訪問;類屬性屬于類可通過類名訪問。 在類的方法中可以調用類的在類的方法中可以調用類的其它方其它方法法,可以訪問,可以訪問類屬性類屬性、對象屬性對象屬性?!纠?-1】 實例屬性和類屬性。實例屬性和類屬性。程序:程序:#Ex

6、p8_1.pyclass Car: price=100000 #定義類屬性定義類屬性 def _init_(self, c): self.color=c #定義實例屬性定義實例屬性 #主程序car1=Car(Red)car2=Car(Blue)print car1.color, Car.priceCar.price=110000 #修改類屬性C=QQ #增加類屬性car1.color=Yellow #修改實例屬性print car2.color, Car.price, Cprint car1.color, Car.price, C程序運行結果:Red

7、100000Blue 110000 QQYellow 110000 QQ如果屬性名以雙下劃線_開頭則是私有屬性,否則是公有屬性。私有屬性在類外不能直接訪問。Python提供了訪問私有屬性的方式,可用于程序的測試和調試。 私有屬性是為了數(shù)據(jù)封裝和保密而設的屬性,只能在類的成員方法(稱為類的內(nèi)部)中使用,通過self訪問。公有屬性是可以公開使用的,既可以在內(nèi)部使用,也可以在外部(通過對象名訪問)使用。8.2.3 類的方法類有3種方法:公有方法、私有方法和靜態(tài)方法。雙下劃線_開頭則是私有方法, 上一行用 staticmethod 標識的方法是靜態(tài)方法,否則是公有方法。 公有方法、私有方法都屬于對象,

8、每個對象都有自己的公有方法和私有方法;公有方法通過對象名調用,私有方法不能通過對象名調用,只能在屬于對象的方法中通過self調用;靜態(tài)方法屬于類,靜態(tài)方法只能通過類名調用,靜態(tài)方法中不能訪問屬于對象的成員,只能訪問屬于類的成員?!纠?-3】 公有方法、私有方法和靜態(tài)方法的定義和調用。#Exp8_3.pyclass Fruit: price=0 def _init_(self): self._color=Red #定義和設置私有屬性color self._city=Kunming #定義和設置私有屬性city def _outputColor(self): #定義私有方法outputColor

9、print(self._color) #訪問私有屬性color def _outputCity(self): #定義私有方法outputCity print(self._city) #訪問私有屬性city def output(self):#定義公有方法output self._outputColor( )#調用私有方法outputColor self._outputCity( )#調用私有方法outputCity staticmethod def getPrice():#定義靜態(tài)方法getPrice return Fruit.price staticmethod def setPrice(p

10、):#定義靜態(tài)方法setPrice Fruit.price=p#主程序apple=Fruit()apple.output() print(Fruit.getPrice( )Fruit.setPrice(9)print(Fruit.getPrice( )apple._outputColor( ) #是否可行?思考:能否添加公有方法,以便能通過對象名訪問私有成員變量_color?程序運行結果:RedKunming09 8.2.4 構造函數(shù)Python中類的構造函數(shù)是_init_,用來為屬性設置初值,在建立對象時自動執(zhí)行。8.2.5 析構函數(shù)Python中類的析構函數(shù)是_del_,用來釋放對象占用的資源,在Python收回對象空間之前自動執(zhí)行?!纠?-5】 構造函數(shù)和析構函數(shù)。#Exp8_5.pyclass Car : def _init_(self, n): self.num=n print 編號為, self.num, 的對象出生了. def _del_(self): print 編號為, self.num, 的對象死了.car1=Car(1)car2=Car(2)del car1del car2程

溫馨提示

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

評論

0/150

提交評論