【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态
這一周Python語言學習,記錄如下。
01
面向對象編OOP
1.1 為什么學習和應用OOP?
1 OOP適合更加復雜的需求分析和項目開發。
2 OOP具有更強大的封裝能力。
3 OOP相比于面向過程編程(OPP),是另一種編程思維,從誰來做思考需求分析和代碼設計與開發。
4 OOP可以提升我數據科學工作的效率。
1.2 什么是OOP?
OOP全稱是(Object Oriented Programming),面向對象編程,一種編程思維和方式。
面對需求分析時,OPP會思考怎么做這個需求,而OOP會思考誰來做這個需求,并且進一步思考這個誰需要具備什么特征和行為,即這個誰的屬性和方法。通過OOP,可以把這個誰的屬性和方法封裝在一起,做成一個類。類是一種抽象,類似建房子的圖紙;對象是類的具體化或者實例化,類似按著圖紙建成一棟棟房子。這個房子有什么特征和能夠做什么,就取決于房子的圖紙(類)的先前的設計。你會發現,面向對象編程,更接近我們的生活,更能夠靈活性地表達我們的生活。
1.3 怎么學習OOP?
通過OOP的概念,我們發現,學習OOP時,我們需要學習這些內容:
1 OOP是一種編程思維和方式。
2 OOP的需求分析是從誰來做開始的,并且要想清楚這個誰要有什么職能。
3 OOP的兩個核心概念:類和對象。
4 OOP的三個重要特性:封裝、繼承和多態。
5 OOP的屬性和方法的類型,例如實例屬性和方法、類屬性和方法、靜態方法。
6 學習和使用OOP來設計和實現負責的項目和系統。
02
類和對象
2.1 概念描述
類和對象是OOP的兩個核心概念。
類是抽象,不能直接使用,它是對一群具有相同特征或者行為的事物的一個統稱。
1 特征稱為屬性
2 行為稱為方法
對象是具體的,可以直接使用,它是類的具體存在,具有類所設計的屬性和方法。
舉例說明:
類相當于建房圖紙,對象相當于按著建房圖紙建造的一棟棟樓房。
在程序開發中,應該先有類,再有對象;應該先設計要使用的類,再設計其它類;設計類的時候遵循奧卡姆剃刀原則,即類設計的時候,不要增加沒有的或者不必要的屬性和方法。
2.2 類設計和生成
使用關鍵詞class來設計類。
簡單示例。
需求分析,需求如下
18歲的小明喜歡跑步和讀書。
20歲的小紅也喜歡跑步和讀書。
根據需求,我們創建一個Person類,具有姓名和年齡屬性,跑步和讀書方法。
參考代碼如下:
結果如下。
03
封裝
封裝是面向對象編程的一大特性。
OOP的第一步,把屬性和方法封裝到一個抽象類中。
外界使用類創建對象,然后用對象調用方法。
對象方法的細節被封裝在類的內部。
前面的Person類就采用了封裝技術。
04
繼承
OOP有三大特性,分別是封裝、繼承和多態。
1 封裝,根據這個誰的職能將屬性和方法封裝到一個抽象的類中
2 繼承,實現代碼重用,相同的代碼不需要重復編寫。編寫程序時,請遵循不寫重復代碼塊的原則。
3 多態,不同的對象調用相同的方法,產生不同的執行結果,增加代碼的靈活度,讓代碼可做更豐富的功能。
繼承的知識點,羅列如下:
子類繼承自父類,可以直接享受父類中已經封裝好的方法,不需要再次開發。
子類根據自己職能,封裝子類特有的屬性和方法。
繼承具有傳遞性。
當父類的方法實現不能滿足子類需求時,可以對父類方法進行重寫(一種是覆蓋父類的方法,另一種是對父類方法功能進行擴展,需要的位置使用super().父類方法)
子類對象不能直接訪問父類的私有屬性和方法(一種隱私保護技術),可以通過父類的公有方法間接訪問。
子類可以多個繼承類,比方說,孩子類繼承父親和母親類的特性和方法。多重繼承的時候,避免各個類里面具有相同的方法。
如果沒有父類,建議統一繼承自object。
05
多態
多態是指不同的子類對象調用相同的父類方法,會產生不同的執行結果。
多態的知識點:
1 多態的好處,增加代碼的靈活度
2 多態的構建,以繼承和重寫父類方法為前提。
繼承和多態的一個簡單實例。
需求分析:
HR需要招聘程序員和設計師,基于OOP采用繼承和多態編寫代碼。
參考代碼:
結果如下:
06
總結
OOP是一種編程方式和思維框架,掌握和熟悉OOP,可以響應更加復雜的需求和開發更加復雜的系統。
OOP的兩大核心概念是類和對象,三大特性是封裝、集成和多態。
總結
以上是生活随笔為你收集整理的【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 把线性的数据结构改成树形结构
- 下一篇: python创建sqlite3 unic