Python面向對象編程(1)類和實例

面向過程和麵向對象編程

面向過程(Procedure Oriented Programming,POP)面向對象編程(Object Oriented Programming,OOP)是兩種主要的程序設計思想。這裡簡單通俗地講一下兩者的區別:

編程的目的:為了去解決一個問題,或者處理一件事情,比如編寫一個程序自動處理學生的信息,或者編寫一個程序可以自動做北京烤鴨。

面向過程編程:按順序編寫一系列程序集合,然後執行,得到想要的結果。比如處理學生信息時,編寫一條代碼獲取學生性別信息,然後再獲取成績信息,最後打印出該學生的姓名及成績,對於每一個學生,把前面的代碼執行一遍就可以打印出相應的信息。對於做北京烤鴨也是類似,第一步洗鴨子,接著烤鴨子,最後

切了吃掉,吃完了還不飽 ,那就再執行一次,再吃一隻。按照我們寫好的命令集合順序執行,之後得到想要的結果,這就是面向過程的編程,其注重的是編寫整個處理的流程。當然為了簡化程序設計,面向過程運用函數把整個過程切分為多個子函數降低系統的複雜度,但它依然是面向過程編程。

面向對象編程:面向對象的編程把計算機程序視為一組對象的集合。比如,處理學生信息時,面向對象的編程並不是想著怎麼編寫程序去處理每個學生的信息,而是把所有這些學生當作一個類(Class),同時把處理類的程序也當作類的一部分,即所有的學生構成一個,類有自己的屬性和方法,比如姓名和成績都是屬性,而打印成績就是方法,而每一個具體的學生只不過是類的一個

實例/對象。這樣不僅可以使代碼更簡潔,也很容易修改屬性和方法。

舉個例子說明具體的區別:

  • 面向過程

std1 = { 'name': 'Michael', 'score': 98 }

std2 = { 'name': 'Bob', 'score': 81 }

處理學生信息可以通過函數實現,比如打印學生的成績:

Python面向對象編程(1)類和實例

面向過程

print_score(std1)

print_score(std2)

  • 面向對象
Python面向對象編程(1)類和實例

面向對象

bart = Student('Bart Simpson', 59)

lisa = Student('Lisa Simpson', 87)

bart.print_score()

lisa.print_score()

類和實例

面向對象最重要的概念就是類(Class)實例(Instance),必須牢記類是抽象的模板,比如Student類,是一個統稱,泛指所有的學生,而實例是根據類創建出來的一個具體的“對象”,比如張三、李四,每個對象都擁有相同的方法,但各自的數據/屬性可能不同。

以Student類為例,在Python中,定義類是通過class關鍵字:

class Student(object):

pass

class 後面緊接著是類名,即 Student,類名通常是大寫開頭的單詞,通常採用大駝峰命名法,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念後面再講,通常,如果沒有合適的繼承類,就使用 object 類,這是所有類最終都會繼承的類。

定義好了 Student 類,就可以根據 Student 類創建出 Student 的實例,創建實例是通過類名+()實現的:

>>> bart = Student()

>>> bart

<__main__.student object="" at=""/>

>>> Student

<class>

可以看到,變量 bart 指向的就是一個 Student 的實例,後面的 0x10a67a590 是內存地址,每個object的地址都不一樣,而Student本身則是一個類。


分享到:


相關文章: