1. 程式人生 > >python(十二)面向物件程式設計、類

python(十二)面向物件程式設計、類

面向物件程式設計

面向物件--Object Oriented Programming,簡稱oop,是一種程式設計思想。在說面向物件之前,先說一下什麼是程式設計正規化,程式設計正規化你按照什麼方式來去程式設計,去實現一個功能。舉個例子,你要做飯,可以用電磁爐,也可以用煤氣灶。不同的程式設計正規化本質上代表對各種型別的任務採取的不同的解決問題的思路,兩種最重要的程式設計正規化分別是面向過程程式設計和麵向物件程式設計。

提到面向物件,就不得不提到另一種程式設計思想,面向過程;什麼是面向過程呢,面向過程的思想是把一個專案、一件事情按照一定的順序,從頭到尾一步一步地做下去,先做什麼,後做什麼,一直到結束。這種思想比較好理解,其實這也是一個人做事的方法,我們之前程式設計的思想也都是使用這種思想。這種程式設計思想,只要前面有一個步驟變了,那麼後面的就也要變,後面維護起來比較麻煩,這樣的程式設計思想,我們在寫一些簡單的小程式、只執行一次的指令碼時可以使用。而面向物件呢,面向物件的思想是把一個專案、一件事情分成更小的專案,或者說分成一個個更小的部分,每一部分負責什麼方面的功能,最後再由這些部分組合而成為一個整體。這種思想比較適合多人的分工合作,就像一個大的機關,分各個部門,每個部門分別負責某樣職能,各個部門可以充分發揮自己的特色,只要符合一定前提就行了。

舉個例子:比如剛才說的一個大的機關,要做某一個專案,從面向過程的思想來說,應該是這樣分析的,先怎麼樣,再怎麼樣,最後怎麼樣。第一樣應該如何完成,第二樣應該如何完成等等。等到每一步驟都完成,專案也就完成了。而面向物件的思想則應該是這樣想的,這個專案是由幾個部分組成的,我們就做好分工,成立一個部門來做一個部分的功能,另一個部門來做另一個部分。各個部門可以不用理解其他部門的事,只要完成自己那一部分的事情就OK了。

面向物件的特性

類:class

類就是一個種類、一個模型

定義類首字母大寫

在類中定義了這些物件的都具備的屬性(variables(data))、共同的方法

 

例項/物件:object

例項或者物件就是根據模型製作出來的東西

一個物件即是一個類的例項化後例項,一個類必須經過例項化後方可在程式中呼叫,一個類可以例項化多個物件,每個物件亦可以有不同的屬性,就像人類是指所有人,每個人是指具體的物件,人與人之前有共性,亦有不同。

 

例項化

就是做東西的這個過程

 

 

屬性

  類裡面的變數

類變數

  就在直接在類下面定義的變數,沒有加self的,每個例項都可以用。

修改類變數:通過類名來修改類變數。或者通過例項來修改類變數

 

例項變數

  self.xxx = xxx 加了self的變數才是例項變數,必須得例項化之後才可以使用

建構函式 /構造方法

  類在例項化的時候會自動執行的一個函式

解構函式

  例項在銷燬的時候自動執行的函式,什麼時候銷燬?例項化之後,程式碼執行,直到沒有程式碼可以執行了,變數都是存在記憶體裡的,記憶體中沒有這個變量了,就是銷燬了

self的作用

代表的是本類物件,即代表例項。

id(self)=id(例項):即self與例項化出來的例項的記憶體地址相同,即他倆是一個東西。

一個變數前面加了self之後,那麼在這個類裡面的其他的函式都可以用了。

也可以在類函式裡面呼叫另一個函式,也得用self.函式()

 

方法:類裡面的函式 

類方法     

  1、不需要例項化就可以呼叫
  2、它可以使用類變數
  3、呼叫其他的類方法。
  4、它不可以使用例項方法、例項變數
    如果類裡面的這個方法,它並沒有使用到其他的例項變數、或者其他例項方法,那麼就給他定義成類方法

  5、例項方法可以呼叫類方法,類方法不可以呼叫例項方法。

 

不可以呼叫例項方法,會報錯

例項方法裡面可以通過self.來呼叫類方法

也可以通過例項來直接呼叫類方法

 

例項方法

  需要傳self的方法,都是例項方法,必須得例項化之後才可以使用
  例項方法裡面可以隨便通過self來呼叫例項方法,類方法,靜態方法,類變數。

 

靜態方法

  1、不需要例項化就可以呼叫的
  2、它就是一個定義在類裡面的普通函式,不能使用例項變數、例項方法、不能使用類變數、類方法。

  3、它就是定義在類裡面的公共方法,誰都可以呼叫,可以直接用累呼叫,可以用例項來呼叫,可以在類方法裡面用cls.來呼叫

  4、列印一些幫助文件之類的可以用靜態方法

屬性方法

看起來像變數的一個方法。呼叫屬性方法時函式名後面不需要加()

 

私有   

變數、函式,前面加兩個下劃線就代表是一個私有的,只能在類裡面用。

什麼是私有,私有就是隻有在類裡面可以訪問,例項化之後不可以訪問和呼叫,有私有方法和私有屬性。私有就把變數名或者函式名前面加上"__"兩個下劃線,其實就是通過私有來實現封裝的。