初學者指南:如何在 Python 中建立實體

更新日期: 2024 年 10 月 11 日

在學習 Python 的過程中,你可能已經熟悉了基本的資料型別和函式。

然而,當程式變得更加複雜時,僅僅依靠函式和資料型別,可能不足以有效地組織和管理程式碼。

這時,物件導向程式設計(Object-Oriented Programming, OOP) 變得非常重要。

透過 OOP,你可以將資料和行為封裝在一起,創建可重用和易於維護的程式。

本文將為新手詳細介紹如何在 Python 中建立實體,並提供實際的示例。


什麼是物件和類別?

  • 類別(Class):類別是物件的藍圖或模板,定義了實體的屬性和行為。
  • 實體( Instance):具有類別所定義的屬性和方法。

透過類別和實體,你可以:

  • 封裝資料和功能。
  • 建立模組化的程式碼,易於維護和重用。
  • 模擬真實世界的實體和概念。

定義類別

在 Python 中,使用 class 關鍵字來定義一個類別。

語法

class 類別名稱:
    # 類別內容
    pass  # 佔位符,表示空的類別

示例

class Person:
    pass

這裡,我們定義了一個名為 Person 的類別,目前類別中沒有任何屬性或方法。


建立實體(實例化)

要創建一個實體,只需調用類別名,並加上括號。

語法

實體名 = 類別名()

示例

person1 = Person()
print(type(person1))  # 輸出:<class '__main__.Person'>

初始化物件:__init__ 方法

__init__ 方法是一個特殊的方法,用於在創建實體時進行初始化設置。

語法

class 類別名稱:
    def __init__(self, 參數1, 參數2, ...):
        self.屬性1 = 參數1
        self.屬性2 = 參數2
        # 其他初始化代碼
  • self:代表物件本身,用於訪問物件的屬性和方法。
  • __init__ 方法中的參數可根據需要進行設置。

示例

class Person:
    def __init__(self, name, age):
        self.name = name  # 設定實體的屬性 name
        self.age = age    # 設定實體的屬性 age

# 創建實體並傳入參數
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

print(person1.name)  # 輸出:Alice
print(person2.age)   # 輸出:25

類別屬性與實體屬性

  • 實體屬性:每個實體所特有的屬性,由 self 引用。
  • 類別屬性:整個類別共享的屬性,所有物件都能訪問。

示例

class Person:
    species = "Homo sapiens"  # 類別屬性

    def __init__(self, name):
        self.name = name  # 實體屬性

person1 = Person("Alice")
person2 = Person("Bob")

print(person1.species)  # 輸出:Homo sapiens
print(person2.species)  # 輸出:Homo sapiens

# 修改類別屬性
Person.species = "Human"

print(person1.species)  # 輸出:Human
print(person2.species)  # 輸出:Human

方法:實體的行為

方法是定義在類別中的函式,用於描述實體的行為。

定義方法

class 類別名稱:
    def 方法名稱(self, 參數):
        # 方法內容
        pass

示例

class Person:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print(f"Hello, my name is {self.name}.")

person1 = Person("Alice")
person1.greet()  # 輸出:Hello, my name is Alice.
  • self:在方法中必須包含 self 參數,用於訪問實體的屬性和其他方法。

實際示例:建立一個簡單的計算器類別

定義類別

class Calculator:
    def __init__(self):
        pass  # 不需要初始化屬性

    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        if b == 0:
            print("除數不能為零。")
            return None
        return a / b

使用類別

calc = Calculator()

print(calc.add(5, 3))        # 輸出:8
print(calc.subtract(5, 3))   # 輸出:2
print(calc.multiply(5, 3))   # 輸出:15
print(calc.divide(5, 0))     # 輸出:除數不能為零。

繼承與多型

繼承

繼承允許你創建一個新類別,繼承已有類別的屬性和方法,實現代碼重用。

class 子類別名稱(父類別名稱):
    # 子類別的內容
    pass

示例

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

    def speak(self):
        pass  # 在父類別中不實現

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

dog = Dog("Buddy")
cat = Cat("Kitty")

print(dog.speak())  # 輸出:Buddy says Woof!
print(cat.speak())  # 輸出:Kitty says Meow!

多型

多型允許你在不考慮實體具體類型的情況下,使用相同的介面。

animals = [Dog("Buddy"), Cat("Kitty")]

for animal in animals:
    print(animal.speak())

輸出:

Buddy says Woof!
Kitty says Meow!

結論

透過學習如何在 Python 中建立物件,你可以:

  • 更有效地組織和管理程式碼。
  • 封裝資料和行為,增加程式的可讀性和可維護性。
  • 使用繼承和多型,提高代碼的重用性和靈活性。

物件導向程式設計是 Python 的核心概念之一,掌握它將大大提升你的編程能力。


進一步學習

  • 魔術方法(Magic Methods):瞭解 __str____repr____add__ 等特殊方法。
  • 封裝性:學習如何使用私有屬性和方法(如 ___ 開頭)。
  • 類別方法與靜態方法:瞭解 @classmethod@staticmethod 的用法。
  • 設計模式:學習常見的設計模式,如單例模式、工廠模式等。

Similar Posts