前言: 是自己在學習python進階IO學習視頻的時候的理解和筆記,因為很多都是本菜鳥學習時候的自己的理解,有可能理解有誤。 Content: - 抽象的概念和麵向對象的概念?想要大概瞭解python的面向對象需要註意哪些知識點? - 由type、object、class來瞭解python對象的機制 ...
前言:
是自己在學習python進階IO學習視頻的時候的理解和筆記,因為很多都是本菜鳥學習時候的自己的理解,有可能理解有誤。
Content:
- 抽象的概念和麵向對象的概念?想要大概瞭解python的面向對象需要註意哪些知識點?
- 由type、object、class來瞭解python對象的機制和特性
- python提供了哪些常用的內置類型?(被抽象成類)
一 抽象和麵向對象和類
在python基礎教程書中,有一章名字是抽象,在學習的時候,我還曾經把這裡面抽象的概念和後面抽象基類的概念弄混淆。
1.抽象的概念
從具體事物抽出、概括出它們共同的方面、本質屬性與關係等,而將個別的、非本質的方面、屬性與關係捨棄,這種思維過程,稱為抽象。 --baidu
在編程中,最簡單的抽象概念就是電腦能理解的一步一步的計算步驟抽象成類或者函數來進行調用,方便人進行抽象理解也方便重用(過程抽象)。
最開始的編程歷史中就和我們初學編程一樣,都是過程抽象(結構化設計方法),但是經過發展慢慢發現僅僅是結構化設計已經滿足不了我們了,於是有了對面向對象的需求。
2.面向對象的概念
面向對象是一種對現實世界理解和抽象的方法,是電腦編程發展到一定階段後,產生的一種軟體開發方法。 --baidu
面向對象中的對象:對象是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。 --baidu
https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/2262089?fr=aladdin#2
三大特性:封裝、繼承、多態。
3.類的概念
具有相同特性和行為的對象的抽象就是類。對象的抽象是類,類的具體是對象。類有屬性和操作。
4.python面向對象的設計
1、2、3中算是編程中的基本概念吧,python中的面向對象設計理念和其他靜態語言還是有所區別的。
a)python面向對象方法中一些比較重要的知識點(不詳解)
鴨子類型、抽象基類、繼承的時候的查找演算法和super函數、靜態方法、類方法、實例方法、python的數據封裝和私有屬性
b)python中一切皆對象,類和函數也是對象。
c) 類和函數在python中作為對象有哪些特質?
- 可以賦值給一個變數
- 可以添加到集合對象中
- 可以作為參數傳遞給函數
- 可以當作函數的返回值
二 type、object和class
在看這段之前,需要先看python基礎明白繼承和實例的概念,還有父類和基類。
1.type可以用來返回一個對象的類型
a)當a是普通int、str類型時
這個結果很好玩,可以發現1的類型是int,int的類型是type。還有type的類型竟然也是type。
可以得出 type類生成了int類,int類(也是對象)生成了 a這個實例
也就是 type--》class--》object
b)如果當a是一個自定義類的時候呢?
a是Student類型,Student是type類型
所以可以得出 type是用來生成類對象的,所有的類都是type類。包括list、dict等也是的。
邏輯:類是type(自己也是個類)的對象,其他的類型是類生成的對象
2.object是所有類的基類,包括也是type這個類的基類
object是最頂層的基類,所有的類最後推到都是繼承object類的。
發現type是object類的子類的,那object呢? type繼承了object類, object是由type生成的對象。兩者成為了迴圈。 而且object是最頂層的類,再往上就沒有類了。 總結:type、object和class的關係為: