Python面向對象編程:類的基本概念
1. 面向對象編程的基本概念
面向對象編程(OOP)是一種編程範式,通過將數據和行為封裝在對象中來組織代碼。OOP的核心概念包括類、對象、繼承和多態性。
2. 類的定義
類是對象的藍圖或模板,定義了對象的屬性和方法。使用類可以創建多個對象,每個對象都可以擁有自己的屬性值。
# 定義一個簡單的類
class Dog:
def __init__(self, name, age):
self.name = name # 屬性
self.age = age # 屬性
def bark(self): # 方法
return "汪汪!"
# 創建對象
my_dog = Dog("小白", 3)
print(my_dog.name) # 輸出:小白
print(my_dog.bark()) # 輸出:汪汪!
3. 屬性和方法
屬性是類中定義的變量,用於存儲對象的狀態;方法是類中定義的函數,用於描述對象的行為。
# 擴展Dog類
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
return "汪汪!"
def get_info(self): # 新增方法
return f"{self.name} 是 {self.age} 歲的狗。"
my_dog = Dog("小白", 3)
print(my_dog.get_info()) # 輸出:小白 是 3 歲的狗。
4. 繼承
繼承允許一個類從另一個類獲取屬性和方法,從而實現代碼的重用。
# 定義一個子類
class Puppy(Dog): # Puppy類繼承Dog類
def __init__(self, name, age, owner):
super().__init__(name, age) # 調用父類的初始化方法
self.owner = owner # 新增屬性
def get_info(self): # 重寫父類方法
return f"{self.name} 是 {self.age} 歲的小狗,主人是 {self.owner}。"
my_puppy = Puppy("小黑", 1, "小明")
print(my_puppy.get_info()) # 輸出:小黑 是 1 歲的小狗,主人是 小明。
5. 練習題
-
創建一個類,表示學生,包含姓名、年齡和成績屬性,並定義一個方法來顯示學生信息。
-
創建一個類,表示書籍,包含標題、作者和價格屬性,並定義一個方法來計算折扣後的價格。
6. 常見錯誤和注意事項
- 確保在類中正確使用self參數來引用對象的屬性和方法。
- 注意類名的命名慣例,通常使用駝峰式命名法。
- 在繼承時,確保正確調用父類的初始化方法。
7. 最佳實踐
- 保持類的單一職責,避免過於複雜的類。
- 使用有意義的屬性和方法名稱,以提高可讀性。
- 在需要時使用繼承,但避免過度使用,保持代碼簡潔。