1. 程式人生 > >面向Python,面向物件(基礎3)!

面向Python,面向物件(基礎3)!

面向物件是一種程式設計思想,看以看成是對現實世界中的事物進行抽象的方式。應用到程式碼程式設計設計中,是一種建立現實世界事物模型的方式。

1.2 面向物件和麵向過程區別

面向過程關注的是完成工作的步驟,面向物件關注的是誰能完成工作,一個關注過程,一個關注完成對應任務的個體。

2.1 類的概念

類是一系列事物的統稱(例如:貓科類),通類事物必定具有相同的特徵。日常事物的特徵根據特性分為狀態和行為,對應到類中就是變數個方法。

特徵分類:
 狀態 —— 變數(成員變數)
 行為 —— 方法(成員方法)
 統稱:類的成員
複製程式碼

2.2 類定義的語法格式

class 類名:
 pass
複製程式碼

面向Python,面向物件(基礎3)!

 

進群“960410445” 即可獲取數十套PDF哦!

說明:pass是空語句,不具有任何意義,僅為了保持程式結構的完整性

注意:類名每個單詞首字母必須大寫,滿足大駝峰命名法,例:BlueCat

3. 物件

3.1 物件是類的具體表現形式,是類中存在的某個個體。(類是一系列事物的統稱)

3.2 建立物件語法格式

物件名 = 類名()

面向Python,面向物件(基礎3)!

 

3.3 注意事項

物件的建立不限制數量,一個類可以建立任意個數的物件

4. 成員變數

4.1 成員變數的概念

成員變數用於描述物件的固有狀態或屬性。

4.2 定義成員變數語法格式(公有屬性/公有變數)

class 類名:		 
 def __init__(self):
 self.變數名1 = 值1
 self.變數名2 = None
複製程式碼

面向Python,面向物件(基礎3)!

 

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):
 方法體
複製程式碼

面向Python,面向物件(基礎3)!

 

格式二(有參方法):

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

面向Python,面向物件(基礎3)!

 

5.3 呼叫成員方法語法格式

格式一(呼叫無參方法):

物件名.方法名()

面向Python,面向物件(基礎3)!

 

格式二(呼叫有參方法):

物件名.方法名(實參1,實參2,...)

面向Python,面向物件(基礎3)!

 

6. __init__方法

6.1 __init__方法的作用

__init__方法,也稱為構造方法,建立物件時為物件初始化成員變數

6.2 定義__init__方法語法格式

格式一:

def __init__(self):
 self.變數名1 = 值1
複製程式碼

面向Python,面向物件(基礎3)!

 

格式二:

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

面向Python,面向物件(基礎3)!

 

6.3 __init__方法呼叫和執行

  • __init__方法在建立物件時被執行,無需手工呼叫即可執行
  • __init__方法中如果有形參,在建立物件時需要傳遞對應的實參

6.4 魔術方法

魔術方法是在類中宣告、定義的方法,執行時無需手工呼叫,自動執行。如: init 。

7. __str__方法

7.1 __str__方法的作用

__str__方法是在使用print函式列印輸出物件到螢幕時被呼叫的方法,用於返回物件的規範化字串表現形式(魔術方法)。

7.2 定義__str__方法語法格式

def __str__(self):
 return 列印物件是顯示的資訊
複製程式碼

面向Python,面向物件(基礎3)!

 

8.成員方法呼叫類成員

8.1 成員方法中呼叫成員變數的語法格式

self.變數名

面向Python,面向物件(基礎3)!

 

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.__屬性名 = 值

面向Python,面向物件(基礎3)!

 

9.3 定義私有方法語法格式

def __方法名(self,形參1,形參2,…):
 方法體
複製程式碼

面向Python,面向物件(基礎3)!

 

說明:一般不會對方法私有化

9.4 標準封裝語法格式

變數私有化格式:

self.__屬性名 = 值
複製程式碼

提供公共的訪問器格式:

def get_屬性名(self):
 return self.__屬性名
複製程式碼

提供公共的修改器格式:

def set_屬性名(self,屬性名):
 self.__屬性名 = 屬性名
複製程式碼

面向Python,面向物件(基礎3)!

 

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