跳轉到內容

面向物件程式設計/類

來自華夏公益教科書,開放的書籍,開放的世界

在面向物件程式設計 (OOP) 中,類是一種用於建立物件的藍圖。它定義了一種新的資料型別,封裝了與特定實體或概念相關的資料和行為(方法)。類可以作為模板,允許我們建立具有相似特徵和行為的多個物件。類本質上是一個用於存放大量函式的容器,這些函式可以相互依賴,也可以在類中獨立執行。

類的組成部分

[編輯 | 編輯原始碼]

類包含兩個主要組成部分:屬性(也稱為特性或資料成員)和方法(也稱為成員函式)。


1. 屬性:屬性是表示物件狀態的變數。它們儲存有關物件特徵的資訊。在動物類比中,屬性可以包括speciesnameageweightcolor等。屬性定義了物件可以儲存哪些資料。


2. 方法:方法是定義物件行為的函式。它們表示物件可以執行的操作。在動物類比中,方法可以包括“make_sound()”、“move_type()”、“eat_what()”等。方法定義了物件可以執行哪些操作。


大多數類都是單獨的 Python 檔案,可以被其他 Python 檔案使用或訪問。將類放在單獨的頁面上允許其他 Python 檔案呼叫和引用該類,而不會直接影響類中的程式碼。類可用於計算方程式,註冊使用者輸入並對其進行操作,以及向其他 Python 檔案引發異常,同樣不會直接受到其他 Python 檔案程式碼的影響。

子類本質上是類的子類。將類視為父母,將子類視為孩子。父類可以將屬性或函式傳遞給子類。或者可以將其視為孩子從父母那裡繼承東西。子類用於更復雜的程式,這些程式在一個宏觀概念下利用多個想法。

下面是使用 Python(或大多數其他 OOP 語言)建立類的模板,我們使用class關鍵字後跟類名和冒號。在類中,我們定義屬性和方法。

class MyClass:
    # Constructor method (__init__) initializes object attributes
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2

    # Method 1
    def method1(self):
        # Method code here

    # Method 2
    def method2(self):
        # Method code here

以下是用 Python 建立 Animal 類藍圖的真實示例。這是一個所有動物的藍圖,稱為“Animal”類,它將包含所有動物園動物共有的屬性和行為。在這個類中,我們定義了屬性,如“species”、“name”和“age”。我們還有兩個方法:“make_sound()”、“move_type()”、eat_what()。目前這些方法是空的(用pass標記),因為每種動物都將以不同的方式實現它們。

class Animal:
    def __init__(self, species, name, age):
        self.species = species
        self.name = name
        self.age = age

    def make_sound(self):
        pass

    def move(self):
        pass
Zebra Biblical Zoo 01
斑馬聖經動物園 01

現在,我們將建立一個單獨的類Zebra,如下所示

class Zebra(Animal):
    def __init__(self, name, age):
        super().__init__("Zebra", name, age)

    def make_sound(self):
        return "Bray"

    def move(self):
        return "Galloping."

正如您在這些類中看到的,我們使用繼承來繼承 Animal 類的屬性和方法。然後,我們覆蓋了“make_sound()”和“move()”方法,以實現每種動物的特定聲音和移動行為。

現在,我們已經建立了一個斑馬類動物,我們現在可以建立單獨的動物物件,並在主程式中與它們進行互動。

def main():
    # Create animal objects
    zebra1 = Zebra("Marty", 10)

    # Interact with other  animals
    print({zebra1.name} " the " {zebra1.species} " says: " {zebra1.make_sound()})
    #Marty the Zebra says : bray
    
    #Interact with enviroments
    print({zebra1.name} " the " {zebra1.species} " aged " {zebra1.age} {zebra1.move()})
    #Marty the Zebra aged 10 galloping
    
if __name__ == "__main__":
    main()

另請參閱

[編輯 | 編輯原始碼]

YouTube 教程

[編輯 | 編輯原始碼]
華夏公益教科書