面向Python,面向物件(基礎3)
面向物件是一種程式設計思想,看以看成是對現實世界中的事物進行抽象的方式。應用到程式碼程式設計設計中,是一種建立現實世界事物模型的方式。
1.2 面向物件和麵向過程區別
面向過程關注的是完成工作的步驟,面向物件關注的是誰能完成工作,一個關注過程,一個關注完成對應任務的個體。
類
2.1 類的概念
類是一系列事物的統稱(例如:貓科類),通類事物必定具有相同的特徵。日常事物的特徵根據特性分為狀態和行為,對應到類中就是變數個方法。
特徵分類: 狀態 —— 變數(成員變數) 行為 —— 方法(成員方法) 統稱:類的成員 複製程式碼
2.2 類定義的語法格式
class 類名: pass 複製程式碼

說明:pass是空語句,不具有任何意義,僅為了保持程式結構的完整性
注意:類名每個單詞首字母必須大寫,滿足大駝峰命名法,例:BlueCat
3. 物件
3.1 物件是類的具體表現形式,是類中存在的某個個體。(類是一系列事物的統稱)
3.2 建立物件語法格式
物件名 = 類名()

3.3 注意事項
物件的建立不限制數量,一個類可以建立任意個數的物件
4. 成員變數
4.1 成員變數的概念
成員變數用於描述物件的固有狀態或屬性。
4.2 定義成員變數語法格式(公有屬性/公有變數)
class 類名: def __init__(self): self.變數名1 = 值1 self.變數名2 = None 複製程式碼

4.3 成員變數定義語法格式(獨有屬性/獨有變數)
物件名.變數名 = 值
class Cat: def __init__(self): self.type = "胖橘" self.name = None cat1 = Cat() print(cat1.type) cat1.name = "大帥" print(cat1.name) # 給cat1穿衣服 cat1.cloth = "紅色" 複製程式碼
說明:在物件名下,之前定義過的變數再用,屬於呼叫變數,之前沒定義過的變數,屬於新定義的變數,之前沒定義的值,屬重新賦值。
4.4 公有變數與獨有變數的區別
- 公有變數在__init__方法中宣告,每個隊形都具有該變數
- 獨有變數在建立物件後宣告,只有當前物件具有此變數
- 定義物件的獨有變數時,如果獨有變數名與公有變數名相同,視為修改公有變數的值;如果獨有變數名與公有變數名不相同,視為定義新的獨有屬性
- None含義是為空,表示沒有具體的資料
4.5 變數的呼叫格式
取值:物件名.變數名
賦值:物件名.變數名 = 值
5.成員方法
5.1 成員方法概念
成員方法用於描述物件的固有行為
5.2 定義成員方法的語法格式
格式一(無參方法):
class 類名: def 方法名(self): 方法體 複製程式碼

格式二(有參方法):
class 類名: def 方法名(self,形參1,形參2,...): 方法體 複製程式碼

5.3 呼叫成員方法語法格式
格式一(呼叫無參方法):
物件名.方法名()

格式二(呼叫有參方法):
物件名.方法名(實參1,實參2,...)

6. __init__方法
6.1 __init__方法的作用
__init__方法,也稱為構造方法,建立物件時為物件初始化成員變數
6.2 定義__init__方法語法格式
格式一:
def __init__(self): self.變數名1 = 值1 複製程式碼

格式二:
def __init__(self,形參1,形參2,…): self.__屬性名1 = 形參1 self.__屬性名2 = 形參2 複製程式碼

6.3 __init__方法呼叫和執行
- __init__方法在建立物件時被執行,無需手工呼叫即可執行
- __init__方法中如果有形參,在建立物件時需要傳遞對應的實參
6.4 魔術方法
魔術方法是在類中宣告、定義的方法,執行時無需手工呼叫,自動執行。如: init 。
7. __str__方法
7.1 __str__方法的作用
__str__方法是在使用print函式列印輸出物件到螢幕時被呼叫的方法,用於返回物件的規範化字串表現形式(魔術方法)。
7.2 定義__str__方法語法格式
def __str__(self): return 列印物件是顯示的資訊 複製程式碼

8.成員方法呼叫類成員
8.1 成員方法中呼叫成員變數的語法格式
self.變數名

8.2 成員方法中呼叫成員方法語法格式
self.方法名(實參1,實參2,...)
class Cat: def catch(self): # 1.跳起 # 2.抓住 # 3.咬死 self.jump() self.grasp() self.bite() def jump(self): print("貓跳了起來") def grasp(self): print("貓抓住了老鼠") def bite(self): print("貓咬死了老鼠") cat1 = Cat() cat1.catch() 複製程式碼
8.3 self
self僅出現在成員方法中,指代執行該方法的物件,可以任意書寫aaa,類似於佔位符,替物件佔位。
9. 封裝
9.1 封裝的作用
封裝操作可以對受訪問保護的成員進行功能開放的控制,達到保護資料不被非法訪問的目的
9.2 定義私有變數語法格式
self.__屬性名 = 值

9.3 定義私有方法語法格式
def __方法名(self,形參1,形參2,…): 方法體 複製程式碼

說明:一般不會對方法私有化
9.4 標準封裝語法格式
變數私有化格式:
self.__屬性名 = 值 複製程式碼
提供公共的訪問器格式:
def get_屬性名(self): return self.__屬性名 複製程式碼
提供公共的修改器格式:
def set_屬性名(self,屬性名): self.__屬性名 = 屬性名 複製程式碼

注意:get、set都是跟一個下劃線_。