Python OOP - Object

類別(class)與物件(Object)

何謂類別 (class)?

  • 類別: 類別是一個模板,用來定義物件的屬性(Attributes)和方法(Methods)。它為物件提供了行為模式,決定物件該如何表現和操作。

  • 定義一個類: 在Python中,使用class關鍵字來定義類別,每個類別可以包含屬性和方法,屬性是變數,而方法是函式(Function),這些都屬於該類別。

舉例:

class Animal:  # 類別
    def __init__(self, name):
        self.name = name  # 屬性

    def speak(self):  # 方法
        print(f"{self.name} is making a sound.")

何謂物件 (object)?

  • 物件: 物件相當於類別的一個實例(instance)。換句話說,類別是一個定義,而物件是依據這個定義創建的具體實。每個物件擁有自己的數據(屬性)和行為(方法)。

  • 定義一個物件: 當你定義了一個類別後,可以使用該類別來創建物件。每個物件是類別的一個具體實例,並且會有各自的屬性數據。

dog = Animal("Buddy")
dog.speak()  # print: Buddy is making a sound.

Note

  • 類別是物件的模板,類別定義了物件的行為模式,而物件則是依據這個模板實例化出來的具體實體

  • 物件能夠使用類別中定義的屬性和方法來執行操作。

  • 類別本身也是一種物件:在Python中,類別本身也是一個特殊類型的物件,稱為”類別物件(class object)”。

初始化類別

  • 當你創建一個類別實例時Python會自動呼叫__init__()方法來初始化該物件。這個方法可以接收參數,通常用來為物件設置初始值。

class Animal:
    def __init__(self, name, sound):
        self.name = name  # 初始化物件的 name 屬性
        self.sound = sound  # 初始化物件的 sound 屬性

    def speak(self):
        print(f"{self.name} says {self.sound}")

# 創建 Animal 類別的實例
dog = Animal("Dog", "Woof!")
cat = Animal("Cat", "Meow")

dog.speak()  # 輸出: Dog says Woof!
cat.speak()  # 輸出: Cat says Meow
  • 建立一個類別時,可以透過__init__()來指派類別中的屬性,但是,類別的定義其實不一定需要__init__(),若你並沒有要給予該物件預設值,是可以不用寫__init__。

  • 關於self:__init__()中的self參數是指向物件本身的引用。當你創建一個物件時,Python會將這個物件的實例作為self傳遞給__init__(),這樣你可以在__init__()方法中定義該物件的屬性。

參考資料