面向物件程式設計/類
在面向物件程式設計 (OOP) 中,類是一種用於建立物件的藍圖。它定義了一種新的資料型別,封裝了與特定實體或概念相關的資料和行為(方法)。類可以作為模板,允許我們建立具有相似特徵和行為的多個物件。類本質上是一個用於存放大量函式的容器,這些函式可以相互依賴,也可以在類中獨立執行。
類包含兩個主要組成部分:屬性(也稱為特性或資料成員)和方法(也稱為成員函式)。
1. 屬性:屬性是表示物件狀態的變數。它們儲存有關物件特徵的資訊。在動物類比中,屬性可以包括species、name、age、weight、color等。屬性定義了物件可以儲存哪些資料。
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,如下所示
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()