Python 程式札記 : 物件導向的基本概念

更新於 2024/12/05閱讀時間約 7 分鐘

物件導向(OOP),不僅提供了更結構化的程式碼組織方式,還有助於提高程式碼的可讀性、可重用性和可維護性。本文將介紹物件導向概念中的類別、對象、繼承、封裝和多型,並透過具體範例來展示這些概念如何在實際編程中應用。

類別和對象

類別(Class)

類別是對一組具有相同屬性和行為的對象的抽象。在 Python 中,類別是使用關鍵字 class 定義的。

class MyClass:
# 類別屬性
attribute = 0

# 初始化方法 (__init__)
# __init__ 是類別的構造函數,用於初始化新創建的對象的屬性。
def __init__(self, value):
self.attribute = value # 使用 self 來訪問類別屬性

# 方法
def method(self):
return self.attribute * 2

對象(Object)

對象是根據類別創建的實例。每個對象都具有類別定義的屬性和行為。

obj = MyClass(10)

# 訪問屬性
print(obj.attribute) # 輸出 10

# 調用方法
print(obj.method()) # 輸出 20

這裡的 self 在 Python 類別的方法中代表當前物件的實例,用於訪問類別的屬性和方法。

實際範例

以下範例展示了如何使用類別和對象來建立學生資料:

class Student:
def __init__(self, name, age):
self.name = name
self.age = age

def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."

student1 = Student("Alice", 20)
student2 = Student("Bob", 22)

print(student1.greet()) # 輸出 Hello, my name is Alice and I am 20 years old.
print(student2.greet()) # 輸出 Hello, my name is Bob and I am 22 years old.

繼承、封裝與多型

繼承

繼承是允許一個類別獲得另一個類別的屬性和方法。子類別可以擴展或修改繼承的行為。

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("Rex")
cat = Cat("Whiskers")
print(dog.speak()) # 輸出: Rex says Woof!
print(cat.speak()) # 輸出: Whiskers says Meow!

封裝

封裝是將物件的屬性和行為方法包裝在一起的過程。在 Python 中,封裝通常透過使用私有和受保護的變數來實現,私有變數是通過在變數名前加上雙下劃線來定義的,用於完全隱藏數據和實現細節,防止外部訪問。

class MyClass:
def __init__(self):
self.__private_var = "I am a private variable"

def get_private_var(self):
return self.__private_var

obj = MyClass()
print(obj.get_private_var()) # 這行可以正常執行
# print(obj.__private_var) # 這行會產生錯誤

受保護變數是通過在變數名前加上單個下劃線定義的,提供了一定程度的隱藏,但仍允許子類訪問和使用這些變數。

class MyClass:
def __init__(self):
self._protected_var = "I am a protected variable"

def get_protected_var(self):
return self._protected_var

class SubClass(MyClass):
def __init__(self):
super().__init__()
print(f"Accessing protected variable from subclass: {self._protected_var}")

obj = MyClass()
print(obj.get_protected_var()) # 可以通過內部方法訪問受保護變數
sub_obj = SubClass() # 子類可以訪問受保護變數

多型

多型是指不同類別的物件可以透過相同的介面呈現不同的行為。在 Python 中,這通常是透過方法重寫來實現的。

class Shape:
def area(self):
pass

class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height

def area(self):
return self.width * self.height

class Circle(Shape):
def __init__(self, radius):
self.radius = radius

def area(self):
return 3.14 * self.radius * self.radius

shapes = [Rectangle(2, 3), Circle(1)]
for shape in shapes:
print(shape.area())

😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊

❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡

avatar-img
60會員
91內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
梧笙の領域展開 的其他內容
本文將介紹如何在 Python 中導入和使用標準函式庫中的模組,以及如何創建自定義模組和套件。我們將透過具體的例子和程式碼,讓你更好的理解和應用模組和套件。
函式是 Python 程式設計中的非常重要的一環,能夠增強程式碼的可讀性和重用性。本文將介紹函式的基本觀念,包含函式的定義、調用、參數類型、返回值,以及在不同範圍內的行為。
本文將介紹 Python 中的字符串操作方法與輸入輸出,從基本的索引、切片到進階的字符串方法,還有如何進行輸入輸出操作,這對於文本處理和用戶交互來說非常重要。
本文將介紹 Python 中的四種基本的資料結構:列表(List)、字典(Dictionary)、集合(Set)和元組(Tuple),並探討如何根據不同的需求選擇合適的資料結構。
本文將介紹 Python 中的控制結構,包括決策制定的 if-else 語句和實現迭代的 for 及 while 迴圈,從基礎語法到實際應用,你將了解如何使用這些控制結構來解決問題。
本文將從算術運算符開始,介紹它們如何用於基本數學運算,接著介紹比較運算符和邏輯運算符,這些運算符在程序中用於進行決策和控制流程,每個運算符都有範例程式,能幫助你更好的了解。
本文將介紹如何在 Python 中導入和使用標準函式庫中的模組,以及如何創建自定義模組和套件。我們將透過具體的例子和程式碼,讓你更好的理解和應用模組和套件。
函式是 Python 程式設計中的非常重要的一環,能夠增強程式碼的可讀性和重用性。本文將介紹函式的基本觀念,包含函式的定義、調用、參數類型、返回值,以及在不同範圍內的行為。
本文將介紹 Python 中的字符串操作方法與輸入輸出,從基本的索引、切片到進階的字符串方法,還有如何進行輸入輸出操作,這對於文本處理和用戶交互來說非常重要。
本文將介紹 Python 中的四種基本的資料結構:列表(List)、字典(Dictionary)、集合(Set)和元組(Tuple),並探討如何根據不同的需求選擇合適的資料結構。
本文將介紹 Python 中的控制結構,包括決策制定的 if-else 語句和實現迭代的 for 及 while 迴圈,從基礎語法到實際應用,你將了解如何使用這些控制結構來解決問題。
本文將從算術運算符開始,介紹它們如何用於基本數學運算,接著介紹比較運算符和邏輯運算符,這些運算符在程序中用於進行決策和控制流程,每個運算符都有範例程式,能幫助你更好的了解。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
理財對於許多人來說似乎是一個艱深的主題,但事實上,每個人都可以從零開始學習如何有效地管理自己的財務。無論你是一個年輕的上班族、學生,或是已經步入退休階段的人,理財的基本原則都能夠幫助你更好地掌握自己的金錢,實現財務目標。這篇文章將為理財小白提供一個簡單的指南,以幫助你開始建立堅實的理財基礎。 瞭解
Thumbnail
這篇會從註冊>介面>使用,一次性完整介紹Leonardo.Ai,會持續追蹤官方的更新進度進行修正。(最後更新時間:2023/08/30)
Thumbnail
我或許不能像太陽那般炙熱,但我成為你靜夜中耀眼的月光,照亮你的夢想 這是我為人錄音的內心話
打工遊學的路程總是充滿了憧憬和挑戰,而其中最令人掙扎的往往是金錢問題。本文將揭示那些從零開始的加拿大打工遊學費用。
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
理財對於許多人來說似乎是一個艱深的主題,但事實上,每個人都可以從零開始學習如何有效地管理自己的財務。無論你是一個年輕的上班族、學生,或是已經步入退休階段的人,理財的基本原則都能夠幫助你更好地掌握自己的金錢,實現財務目標。這篇文章將為理財小白提供一個簡單的指南,以幫助你開始建立堅實的理財基礎。 瞭解
Thumbnail
這篇會從註冊>介面>使用,一次性完整介紹Leonardo.Ai,會持續追蹤官方的更新進度進行修正。(最後更新時間:2023/08/30)
Thumbnail
我或許不能像太陽那般炙熱,但我成為你靜夜中耀眼的月光,照亮你的夢想 這是我為人錄音的內心話
打工遊學的路程總是充滿了憧憬和挑戰,而其中最令人掙扎的往往是金錢問題。本文將揭示那些從零開始的加拿大打工遊學費用。