資源描述:
《Python面向對象程序設計.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第6章面向對象程序設計面向對象程序設計(ObjectOrientedProgramming,OOP)的思想主要針對大型軟件設計而提出,使得軟件設計更加靈活,能夠很好地支持代碼復用和設計復用,并且使得代碼具有更好的可讀性和可擴展性。面向對象程序設計的一條基本原則是計算機程序由多個能夠起到子程序作用的單元或對象組合而成,這大大地降低了軟件開發(fā)的難度,使得編程就像搭積木一樣簡單。面向對象程序設計的一個關鍵性觀念是將數(shù)據(jù)以及對數(shù)據(jù)的操作封裝在一起,組成一個相互依存、不可分割的整體,即對象。對于相同類型的對象進行分類、抽象后,得出共同的特征而
2、形成了類,面向對象程序設計的關鍵就是如何合理地定義和組織這些類以及類之間的關系。Python完全采用了面向對象程序設計的思想,是真正面向對象的高級動態(tài)編程語言,完全支持面向對象的基本功能,如封裝、繼承、多態(tài)以及對基類方法的覆蓋或重寫。但與其他面向對象程序設計語言不同的是,Python中對象的概念很廣泛,Python中的一切內容都可以稱為對象例如,字符串、列表、字典、元組等內置數(shù)據(jù)類型都具有和類完全相似的語法和用法。創(chuàng)建類時用變量形式表示的對象屬性稱為數(shù)據(jù)成員或成員屬性,用函數(shù)形式表示的對象行為稱為成員函數(shù)或成員方法,成員屬性和成員方
3、法統(tǒng)稱為類的成員。6.1.1類定義語法Python使用class關鍵字來定義類,class關鍵字之后是一個空格,然后是類的名字,再然后是一個冒號,最后換行并定義類的內部實現(xiàn)。類名的首字母一般要大寫,當然您也可以按照自己的習慣定義類名,但是一般推薦參考慣例來命名,并在整個系統(tǒng)的設計和實現(xiàn)中保持風格一致,這一點對于團隊合作尤其重要。例如:classCar:#新式類必須有至少一個基類definfor(self):print("Thisisacar")6.1.1類定義語法定義了類之后,可以用來實例化對象,并通過“對象名.成員”的方式來訪問其
4、中的數(shù)據(jù)成員或成員方法,例如下面的代碼:>>>car=Car()>>>car.infor()Thisisacar在Python中,可以使用內置方法isinstance()來測試一個對象是否為某個類的實例,下面的代碼演示了isinstance()的用法。>>>isinstance(car,Car)True>>>isinstance(car,str)False6.1.1類定義語法最后,Python提供了一個關鍵字“pass”,類似于空語句,可以用在類和函數(shù)的定義中或者選擇結構中。當暫時沒有確定如何實現(xiàn)功能,或者為以后的軟件升級預留空間,
5、或者其他類型功能時,可以使用該關鍵字來“占位”。例如下面的代碼都是合法:>>>classA:pass>>>defdemo():pass>>>if5>3:pass6.1.2self參數(shù)類的所有實例方法都必須至少有一個名為“self”的參數(shù),并且必須是方法的第一個形參(如果有多個形參的話),“self”參數(shù)代表將來要創(chuàng)建的對象本身。在類的實例方法中訪問實例屬性時需要以“self”為前綴,但在外部通過對象名調用對象方法時并不需要傳遞這個參數(shù),如果在外部通過類名調用對象方法則需要顯式為self參數(shù)傳值。6.1.2self參數(shù)在Python中
6、,在類中定義實例方法時將第一個參數(shù)定義為“self”只是一個習慣,而實際上類的實例方法中第一個參數(shù)的名字是可以變化的,而不必須使用“self”這個名字,例如下面的代碼:>>>classA:def__init__(hahaha,v):hahaha.value=vdefshow(hahaha):print(hahaha.value)>>>a=A(3)>>>a.show()36.1.3類成員與實例成員這里主要指數(shù)據(jù)成員,或者廣義上的屬性??梢哉f屬性有兩種,一種是實例屬性,另一種是類屬性。實例屬性一般是指在構造函數(shù)__init__()中定義
7、的,定義和使用時必須以self作為前綴;類屬性是在類中所有方法之外定義的數(shù)據(jù)成員。在主程序中(或類的外部),實例屬性屬于實例(對象),只能通過對象名訪問;而類屬性屬于類,可以通過類名或對象名訪問。6.1.3類成員與實例成員在類的方法中可以調用類本身的其他方法,也可以訪問類屬性以及對象屬性。在Python中比較特殊的是,可以動態(tài)地為類和對象增加成員,這一點是和很多面向對象程序設計語言不同的,也是Python動態(tài)類型特點的一種重要體現(xiàn)。6.1.3類成員與實例成員classCar:price=100000#定義類屬性def__init__
8、(self,c):self.color=c#定義實例屬性car1=Car("Red")car2=Car("Blue")print(car1.color,Car.price)Car.price=110000#修改類屬性Car.name=