python學習-第十三週:面向物件程式設計OOP
阿新 • • 發佈:2020-09-12
python學習-第十三週:面向物件程式設計OOP
面向物件程式設計
面向物件程式設計(Object Oriented Programming)簡稱
OOP
,是一種以物件為中心的程式設計思想。
與之對應的是,面向過程程式設計(Procedure Oriented ProgrammingPOP
),即以過程為中心的程式設計思想。
理解面向過程與面向物件思想
對於同一個問題用這兩種不同的思想來解決,看看它們的區別
提出問題:做飯
面向過程:
1.買菜
2.洗菜
3.刷鍋刷碗
4.炒菜
5.端上餐桌
面向物件:
物件:廚師
告訴廚師去做飯
面向物件就是呼叫物件去解決問題,具體的物件如何去解決呢?
廚師這個物件肯定也是一步步去做飯。但是對於我來說,就是呼叫了物件。
面向過程和麵向物件的區別和優缺點?
一,面向過程
面向過程的核心是過程,過程就是指解決問題的步驟。
優缺點:
- 優點: 將負責的問題流程化,進而實現簡單化
- 缺點:擴充套件性差(更新,維護,迭代)
總結:在去完成一些簡單的程式時,可以使用面向過程去解決。但是如果有複雜的程式或任務,而且需要不斷的進行迭代和維護,那麼肯定是優先選擇面向物件的程式設計思想
二,面向物件
面向物件的核心是物件,是一個特徵和功能的綜合體
優缺點:
- 優點:可擴充套件性高
- 缺點:程式設計複雜度相對面向過程高一些。
認識OOP中的概念
類:類是物件的一個抽象的概念
物件(例項):物件就是由類的建立的例項
類和物件的關係就是 模具與鑄件、整體和部分的關係
- 類是由物件總結而來的,總結的這個過程叫做抽象
- 物件是由類具體實施出來的,這個過程叫做例項化
例如:水果是一個類,蘋果是一個物件
汽車是一個類,寶馬是一個物件
類 由 屬性和方法 兩個內容組成:
屬性:(類的特徵)就是一個描述:顏色、品種、大小 。。。
方法:(類的功能)就是一個能力:拉貨、載人。。。
屬性在程式設計中就是一個變數 ,方法在程式設計中就是一個函式
類中屬性一般定義在前面,方法定義在後面
面向物件程式設計的基本實現
第一步:抽象一個類
# 定義一個汽車的類 class Cart(): pass ''' 類名的書寫規範,建議使用駝峰命名法 大駝峰:MyCar XiaoMi 小駝峰:myCar xiaoMi '''
第二步:定義類的屬性和方法
# 定義一個汽車的類
class Cart():
# 屬性 ==> 特徵 ==> 變數
color = '白色' # 表示顏色屬性
brand = '寶馬' # 表示品牌屬性
pailiang = 2.4 # 表示排列屬性
# 方法 ==> 功能 ==> 函式
def yunhuo(self):
print('小汽車能運貨')
def doufeng(self):
print('小汽車能兜風')
def didi(self):
print('小汽車開滴滴')
使用一個類
# 如何去使用這個類?
# 通過類例項化一個物件
baoma = Cart()
# 呼叫方法
baoma.doufeng()
# 獲取物件的屬性
print(baoma.brand)
對屬性和方法的操作
物件操作
成員屬性:
訪問: 物件.屬性名
修改: 物件.屬性名 = 新值。(此時等於給這個物件建立了一個自己的屬性)
新增: 物件.新屬性名 = 值 (此時是給這個物件自己新建了一個屬性)
刪除: del 物件.屬性名 (注意:只能刪除這個物件自己的屬性)
成員方法:
訪問: 物件.方法名()
修改: 物件.方法名 = func(此時等於給這個物件建立了一個自己的方法)
新增: 物件.新方法名 = func (此時是給這個物件自己新建了一個方法)
刪除: del 物件.方法名 (注意:只能刪除這個物件自己的方法)
類操作(不推薦)
操作屬性:
訪問: 類名.屬性名
修改: 類名.屬性名 = 新值。(此時通過這個類建立的物件都具有這個屬性)
新增: 類名.新屬性名 = 值 (此時通過這個類建立的物件都具有這個屬性)
刪除: del 類名.屬性名 (注意:刪除這個類的屬性後,這個類建立的物件也沒有這幾個屬性了)
操作方法:
訪問: 類名.方法名()
修改: 類名.方法名 = func(此時通過類建立的物件都被修改)
新增: 類名.新方法名 = func (此時通過類建立的物件都被修改)
刪除: del 類名.方法名 (注意:此時通過類建立的物件都被修改)
總結
- 一個類可以例項化出多個物件,每個物件在記憶體中都獨立存在的
- 當通過類例項化物件時,並不會把類中的成員複製一份給物件,而去給物件了一個引用
- 訪問物件成員的時候,如果物件自己沒有這個成員,物件會向例項化它的類去查詢
- 物件成員的新增和修改,都只會影響當前物件自己,不會影響類和其它物件
- 刪除物件的成員時,必須是該物件自己具備的成員才可以,不能刪除類中引用的成員
- 對類的成員操作,會影響通過這個類建立的物件,包括之前建立的。
面向物件程式設計OOP部分歸納完畢,下週總結OOP的特性相關內容,下週見~