Python 100天-從新手到大師學習筆記Day08:物件導向程式設計基礎

閱讀時間約 7 分鐘


物件導向程式設計基礎

面向物件程式設計(Object-Oriented Programming,簡稱 OOP)是一種程式設計範式,強調將程式組織成由物件構成的模組。每個物件都包含了資料和操作資料的方法。OOP 的核心理念是透過模擬現實世界中的物件來解決問題,並且讓程式碼更具組織性、可讀性和可維護性。


OOP 有四大核心概念:封裝(Encapsulation)、繼承(Inheritance)、多型(Polymorphism)和抽象(Abstraction)。


以下是 OOP 的基礎概念——物件的簡單介紹。


定義類(Class)

在Python中可以使用class關鍵字定義類,然後在類中透過函式來定義方法,這樣就可以將物件的動態特徵描述出來。

例如,"車子"可以是一個類,其中包含屬性如顏色、品牌、速度等,還包含方法如加速、煞車等行為。


定義物件(Object)

物件是根據類創建的具體實例,是類的具體化。物件擁有類定義的屬性和方法,是實際存在的個體。例如,"一台紅色的 Toyota 車子"就是 "車子" 類的物件。


類與物件的封裝(Encapsulation)練習

封裝指的是將資料(屬性)和行為(方法)組合到一個單獨的單位中,並讓它們能夠相互操作。此處 Car 類中,colorbrand 這兩個屬性以及 start 方法都被封裝在一起,使得每個 Car 物件都包含自己的資料與行為。

'''
Version: Day08
Author: SQA yang
面向物件程式設計
(Object-Oriented Programming,簡稱 OOP)
'''

# 定義一個Car的類class
class Car:
def __init__(self, color, brand):
self.color = color
self.brand = brand

def start(self):
print(f"{self.brand} car is starting.")

my_car = Car("Red", "Toyota")  # 創建一個Car類的物件

# 使用物件屬性和方法
print(my_car.color)       # 輸出: Red
print(my_car.brand)       # 輸出: Toyota
my_car.start()            # 輸出: Toyota car is starting.
python物件導向設計:封裝案例

python物件導向設計:封裝案例


類與物件的封裝、抽象、繼承、多型練習


'''
Version: Day08
Author: SQA yang
面向物件程式設計(Object-Oriented Programming,簡稱 OOP)
'''
from abc import ABC, abstractmethod
# 抽象基類 Vehicle,代表所有車輛的抽象類

class Vehicle(ABC):
def __init__(self, color, brand):
self.color = color
self.brand = brand

@abstractmethod
def start(self):
"""抽象方法,必須由子類別實作具體功能"""
pass

# Car 類,繼承自 Vehicle 類,並實現 start 方法
class Car(Vehicle):
def start(self):
print(f"{self.brand} car is starting with a soft engine sound.")
# Truck 類,繼承自 Vehicle 類,並實現自己的 start 方法

class Truck(Vehicle):
def start(self):
print(f"{self.brand} truck is starting with a heavy engine sound.")

# 創建不同類型的車輛物件
my_car = Car("Red", "Toyota")
my_truck = Truck("Blue", "Ford")

# 使用多型,呼叫 start 方法
my_car.start()     # 輸出: Toyota car is starting with a soft engine sound.
my_truck.start()   # 輸出: Ford truck is starting with a heavy engine sound.
封裝、抽象、繼承、多型練習

封裝、抽象、繼承、多型練習



  1. 抽象(Abstraction)
    • Vehicle 類是一個抽象基類,使用了 ABC 模組和 @abstractmethod 裝飾器來定義 start 方法作為抽象方法。抽象基類本身不能實例化,必須被其他子類繼承並實作其方法。
  2. 繼承(Inheritance)
    • Car 和 Truck 類繼承了 Vehicle 類,因此它們會擁有 Vehicle 的屬性(color 和 brand)。這些子類也必須實現 Vehicle 類中的抽象方法 start,以符合抽象基類的要求。
  3. 多型(Polymorphism)
    • 雖然 Car 和 Truck 都繼承了 Vehicle 類並擁有相同的 start 方法名,但它們的 start 方法執行不同的操作。Car 的 start 方法會顯示 "soft engine sound",而 Truck 的 start 方法則顯示 "heavy engine sound"。這就是多型,因為相同的方法(start)在不同的類中有不同的行為。
  4. 封裝(Encapsulation)
    • 每個物件(例如 my_car 和 my_truck)封裝了自己的屬性和方法,且不影響其他物件的屬性。封裝讓每個物件有自己的 color 和 brand,並能使用 start 方法。



以上為Python100天從新手到大師的Day08學習筆記。



從一個低薪文組轉職軟體測試工程師Software Quality Assurance (SQA) Engineer的過程,紀錄閱讀過的相關測試書籍文獻,以及記錄自我技術成長的過程,包含手動測試與自動化測試相關工具等。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節的目的是介紹 Kotlin 中的物件導向概念。這包括了類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型以及反射等概念。每一個概念都會透過範例程式碼來解釋其功能和用法。
Thumbnail
這個章節主要介紹了Swift程式語言中物件導向程式設計的基本概念,包括類別、建構子、公開、私有、受保護等等的概念。同時,也介紹了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射等進階特性。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,