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

發燒級發表於2019-02-05

1. 物件導向

1.1 物件導向概念

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

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

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

2. 類

2.1 類的概念

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

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

2.2 類定義的語法格式

class 類名:
    pass
複製程式碼
面向Python,物件導向(基礎3)

說明: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都是跟一個下劃線_。

相關文章