您的位置:首頁>正文

公司來了一批本科實習生,底子真的好差!這篇物件導向正適合他們

現在實習生真的是一抓一大把!很多企業都有大量招聘實習生, 實習生可能一開始不能給公司帶來什麼, 但是重點是培養起來之後還是蠻不錯的!但是能招實習生的企業也是蠻少吧。 今天就是給他們打底子, 希望都能戒驕戒躁!先來點代碼看看吧!

物件導向基礎

物件導向的三大特性

繼承

繼承是一種創建新類的方式, 在python中, 新建的類可以繼承一個或多個父類, 父類又可稱為基類或超類, 新建的類稱為派生類或子類

python中類的繼承分為:單繼承和多繼承.小編給大家推薦一個學習氛圍超好的地方, Python學業交流:103456743!四千多小夥伴了吧!所以看到了快點進來吧, 不然就滿了!裡面資料都是大家貢獻的, 幾百個G了!什麼PDF, 零基礎入門, 爬蟲, web 資料分析都是有視頻加源碼的。 而已裡面好多學生, 工作了的, 遇到bug了可以尋求幫助, 遇到解決不了的問題也可以和大家交流,

從而解決自己多時的問題。 這也是一件樂事, 我們不做外包, 只為共同進步!

介面

多態

多態指的是一類事物有多種形態

動物有多種形態:人, 狗, 豬

多態性

封裝

【封裝】

隱藏物件的屬性和實現細節, 僅對外提供公共訪問方式。

【好處】

1. 將變化隔離;

2. 便於使用;

3. 提高複用性;

4. 提高安全性;

【封裝原則】

1. 將不需要對外提供的內容都隱藏起來;

2. 把屬性都隱藏, 提供公共方法對其訪問。

這種變形需要注意的問題是:

1.這種機制也並沒有真正意義上限制我們從外部直接訪問屬性, 知道了類名和屬性名就可以拼出名字:_類名__屬性, 然後就可以訪問了, 如a._A__N

2.變形的過程只在類的內部生效,在定義後的賦值操作, 不會變形

3.在繼承中, 父類如果不想讓子類覆蓋自己的方法, 可以將方法定義為私有的

物件導向總結

2、類的屬性

在類的內部定義的屬性,與類的方法平級。類的屬性是屬於類全域的,可以用 類名.屬性名 調用,也可以用 類的產生實體物件.屬性名 調用,如下:

4、產生實體類的物件

產生實體物件名 = 類名(參數1,參數2,參數3....)

5、類的其他方法

dir(類名):查出的是一個包含類的各個方法的列表

類名.__dict__:查出的是一個字典,key為屬性名,value為屬性值

類名.__name__:類的名字(字串)

類名.__base__: 類的第一個父類(在講繼承時會講)

類名.__bases__ : 類所有父類構成的元組

類名.__module__ : 類定義所在的模組

二、物件導向三大特性

1、繼承

繼承的定義:

繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類

繼承的分類:

①單繼承:class B(A):pass

②多繼承:class C(B,A...)

繼承的作用:

① 減少代碼的重用

② 提高代碼可讀性

③ 規範程式設計模式

如何查看繼承至哪些類:

① 類名.__base__或者 類名.__bases__

② 如果沒有基類,那麼默認繼承object類

抽象類別:

① 抽象類別是一個介於類和介面之間的一個概念,同時具備類和介面的部分特性,可以用來實現歸一化設計

在python中,並沒有介面類別這種東西,即便不通過專門的模組定義介面,我們也應該有一些基本的概念。

② 抽象類別的本質還是類,指的是一組類的相似性,包括資料屬性(如all_type)和函數屬性(如read、write),而介面只強調函數屬性的相似性。

繼承類的查找順序:

① 經典類(沒有繼承object物件的類)

多繼承情況下,按照深度優先進行查找

② 新式類(繼承了object物件的類(python3中所有類都是新式類))

多繼承情況下,按照廣度優先來查找

繼承的原理:

python到底是如何實現繼承的,對於你定義的每一個類,python會計算出一個方法解析順序(MRO)清單,這個MRO列表就是一個簡單的所有基類的線性順序清單

3、封裝

封裝的定義

隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。

封裝的好處

1. 將變化隔離;

2. 便於使用;

3. 提高複用性;

4. 提高安全性;

封裝的原則

1. 將不需要對外提供的內容都隱藏起來;

2. 把屬性都隱藏,提供公共方法對其訪問。

封裝的分類

①私有屬性

__屬性名 = 屬性值

只能在內部被調用,self.__屬性名

②私有方法

def __func(self,參數):pass

只能在內部被調用,self.__方法名(參數)

③私有實現的原理

其實只是python將私有屬性改了一下名字,可以通過 類名._類名__屬性名 來進行訪問,但是不要這樣做

靜態屬性

一個靜態屬性property本質就是實現了get,set,delete三種方法

issubclass(sub, super)檢查sub類是否是 super 類的派生類

注意:封裝絕不是等於“把不想讓別人看到、以後可能修改的東西用private隱藏起來”

真正的封裝是,經過深入的思考,做出良好的抽象,給出“完整且最小”的介面,並使得內部細節可以對外透明

(注意:對外透明的意思是,外部調用者可以順利的得到自己想要的任何功能,完全意識不到內部細節的存在)

合成

自省/反射

自省也稱作反射,這個性質展示了某物件是如何在運行期取得自身資訊的。如果傳一個物件給你,你可以查出它有什麼能力,這是一項強大的特性。如果Python不支持某種形式的自省功能,dir和type內建函數,將很難正常工作。還有那些特殊屬性,像__dict__,__name__及__doc__

六、物件導向思維導圖

2、類的屬性

在類的內部定義的屬性,與類的方法平級。類的屬性是屬於類全域的,可以用 類名.屬性名 調用,也可以用 類的產生實體物件.屬性名 調用,如下:

4、產生實體類的物件

產生實體物件名 = 類名(參數1,參數2,參數3....)

5、類的其他方法

dir(類名):查出的是一個包含類的各個方法的列表

類名.__dict__:查出的是一個字典,key為屬性名,value為屬性值

類名.__name__:類的名字(字串)

類名.__base__: 類的第一個父類(在講繼承時會講)

類名.__bases__ : 類所有父類構成的元組

類名.__module__ : 類定義所在的模組

二、物件導向三大特性

1、繼承

繼承的定義:

繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類

繼承的分類:

①單繼承:class B(A):pass

②多繼承:class C(B,A...)

繼承的作用:

① 減少代碼的重用

② 提高代碼可讀性

③ 規範程式設計模式

如何查看繼承至哪些類:

① 類名.__base__或者 類名.__bases__

② 如果沒有基類,那麼默認繼承object類

抽象類別:

① 抽象類別是一個介於類和介面之間的一個概念,同時具備類和介面的部分特性,可以用來實現歸一化設計

在python中,並沒有介面類別這種東西,即便不通過專門的模組定義介面,我們也應該有一些基本的概念。

② 抽象類別的本質還是類,指的是一組類的相似性,包括資料屬性(如all_type)和函數屬性(如read、write),而介面只強調函數屬性的相似性。

繼承類的查找順序:

① 經典類(沒有繼承object物件的類)

多繼承情況下,按照深度優先進行查找

② 新式類(繼承了object物件的類(python3中所有類都是新式類))

多繼承情況下,按照廣度優先來查找

繼承的原理:

python到底是如何實現繼承的,對於你定義的每一個類,python會計算出一個方法解析順序(MRO)清單,這個MRO列表就是一個簡單的所有基類的線性順序清單

3、封裝

封裝的定義

隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。

封裝的好處

1. 將變化隔離;

2. 便於使用;

3. 提高複用性;

4. 提高安全性;

封裝的原則

1. 將不需要對外提供的內容都隱藏起來;

2. 把屬性都隱藏,提供公共方法對其訪問。

封裝的分類

①私有屬性

__屬性名 = 屬性值

只能在內部被調用,self.__屬性名

②私有方法

def __func(self,參數):pass

只能在內部被調用,self.__方法名(參數)

③私有實現的原理

其實只是python將私有屬性改了一下名字,可以通過 類名._類名__屬性名 來進行訪問,但是不要這樣做

靜態屬性

一個靜態屬性property本質就是實現了get,set,delete三種方法

issubclass(sub, super)檢查sub類是否是 super 類的派生類

注意:封裝絕不是等於“把不想讓別人看到、以後可能修改的東西用private隱藏起來”

真正的封裝是,經過深入的思考,做出良好的抽象,給出“完整且最小”的介面,並使得內部細節可以對外透明

(注意:對外透明的意思是,外部調用者可以順利的得到自己想要的任何功能,完全意識不到內部細節的存在)

合成

自省/反射

自省也稱作反射,這個性質展示了某物件是如何在運行期取得自身資訊的。如果傳一個物件給你,你可以查出它有什麼能力,這是一項強大的特性。如果Python不支持某種形式的自省功能,dir和type內建函數,將很難正常工作。還有那些特殊屬性,像__dict__,__name__及__doc__

六、物件導向思維導圖

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示