圖片來源:(https://www.peekme.cc/post/1219523#google_vignette)
在 Python 中,類別(Class)
是 物件導向程式設計 (Object Oriented Programming, OOP)
基礎。可以將類別想像成一個藍圖,這個藍圖定義了物件的 屬性(attributes)
和 方法(methods)
而 物件(object)
則是根據這個藍圖所創建的實體。
類別(Class) |
抽象的概念,定義物件共同特性 |
---|---|
物件(Object) |
類別的實例,擁有類別所定義屬性和方法 |
屬性(Attribute) |
物件的資料,代表物件特徵 |
方法(Method) |
物件的行為,代表物件可以做什麼 |
建立類別
class MyClass:
# 初始化方法
def __init__(self, name, age):
self.name = name
self.age = age
# 其他方法
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
class MyClass
:宣告一個名為 MyClass 的類別__init__
: 這是初始化方法,當創建一個物件時會自動執行,用來初始化物件的屬性self
: 代表物件本身,在方法內部使用 self 來存取物件的屬性創建物件
# 創建一個 MyClass 的物件
person1 = MyClass("Cindy", 30)
# 呼叫物件的方法
person1.greet()
屬性描述器(Property)
class Person:
def __init__(self, name, age):
self._age = age # 使用 _age 作為儲存屬性的變數
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative")
self._age = value
繼承
類別可以繼承自其他類別,子類別會繼承父類別的屬性和方法
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
是將資料和方法封裝在類別中,以保護資料的完整性
Python 使用_
或__
來表示私有屬性和方法
允許不同類型的物件使用相同的介面
子類別可以重寫父類別的方法,實現不同行為
模擬簡單汽車
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def start(self):
print("The car has started.")
def stop(self):
print("The car has stopp
ed.")
# 創建一個汽車物件
my_car = Car("Toyota", "Camry", 2023)
my_car.start()
模擬學生
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
def study(self):
print(f"{self.name}正在努力學習!")
# 創建一個Student類別的物件
student1 = Student("Alice", 20, "A")
student1.study()
模擬基本銀行帳戶
class BankAccount:
def __init__(self, balance):
self.balance = balance
def deposit(self, amount):
self.balance += amount
print("存款成功!餘額為:", self.balance)
def withdraw(self, amount):
if amount > self.balance:
print("餘額不足!")
else:
self.balance -= amount
print("提款成功!餘額為:", self.balance)
模擬小狗
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print("汪汪!")
def eat(self):
print("正在吃東西...")
# 創建兩個狗的物件
dog1 = Dog("小白", "黃金獵犬")
dog2 = Dog("黑寶", "拉布拉多")
# 呼叫物件的方法
dog1.bark() # 汪汪!
dog2.eat() # 正在吃東西...
圖片來源:(https://www.toy-people.com/?p=59388)