接觸python久了,我們經常聽到這樣一句話,就是python中“萬物皆對象”。這是因爲,python是一門面向對象的編程語言。
那麼什麼是面向對象呢?這裏就需要談一下面向對象和麪向過程之間的區別。
1、面向過程
面下過程比較容易理解,就是遇到一個問題,我們按照正常邏輯開始思考,按照步驟來解決這樣一個問題,結果,我們就得到了解決這個問題的一個過程。
例如,小明現在想去北京旅遊,我們需要爲小明買一張飛機票,那麼我們得到的過程是這樣的:
打開某網站
輸入當前地址和北京
查詢機票
輸入小明的證件信息
付款
這樣我們就幫小明把機票買完了,整個過程就是這樣,比較容易思考,編寫出來的程序也會整潔明瞭。
這就是所謂的面向過程,就是按照過程來編寫程序。
先來看一下這樣做的好處:
- 將我們的程序分解爲一個一個步驟,通過對每個步驟的抽象來完成程序
- 這種編程方式符號人類的思維,編寫起來比較容易
大概也就這些了,那麼這麼做有什麼缺點呢?
如果,小華現在想去上海旅遊,又需要給小華買一張高鐵票,那我有需要從頭再來編寫這樣一個程序,這時候再來幾個人,我就感覺到厭煩了,我就想到能不能用一個模板來解決所有人的車票。這個時候面向對象就橫空出世了。
總結一下面向過程的缺點:
- 這種編寫方式往往只能實現一個特定功能
- 如果需要實現別的功能,複用性往往比較低,而我們想要的是通用的程序
2、面向對象
所謂面向對象的語言,簡而言之,就是語言中的所有操作都是通過對象來進行的。
對象,就是一個存儲數據的容器。
任何事情都由兩部分組成,就是“人”(屬性)和行爲(方法)。
比方說,就剛纔買車票這一件事,我可以給他弄出一個模板來。
這個過程中的屬性都有:
- 小明
- 小明的證件信息
- 當前地址和目的地
行爲有: - 打開某網址
- 輸入信息
- 付款
這樣一個模板就這樣完成了,之後給所有人買票我都可以用這樣一個模板。(注意上述屬性和方法沒有先後順序)
總結一下面向對象的好處:
- 面向對象的編程語言,關注的是對象,不注重過程
- 面向對象的編程思想,將所有功能統一保存到對應的對象中,要使用某個功能,直接找到對應的對象即可
- 這種編碼方式比較容易閱讀,並且易於維護,容易複用。
當然它也是有缺點的,就是編寫的過程中不太符合常規的思維,程序寫起來比較困難。
總而言之,面向對象是我們的終極目標。