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