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學習筆記。



留言
avatar-img
留言分享你的想法!
avatar-img
軟體測試工程師Yang
2會員
14內容數
從一個低薪文組轉職軟體測試工程師Software Quality Assurance (SQA) Engineer的過程,紀錄閱讀過的相關測試書籍文獻,以及記錄自我技術成長的過程,包含手動測試與自動化測試相關工具等。
2024/10/27
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
2024/10/27
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
2024/10/20
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
Thumbnail
2024/10/20
本文探討Python中函式的定義和作用,重點解釋如何通過函式定義def 來解決重複程式碼的問題,並介紹函式引數的預設值和可變引數的使用。並分析了函式的命名衝突問題,以及函式的作用域管理,特別是全域性和區域性變數的區別。這篇文章將幫助初學者更好地理解Python函式的基礎知識,提升程式碼質量。
Thumbnail
2024/10/20
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
Thumbnail
2024/10/20
本文介紹了學習Python後,如何將日常自然語言翻譯成程式碼。並運用所學知識解決實際問題。這些練習不僅鞏固了學習者的程式設計能力,還提升解決問題的思維能力。適合所有想要進一步瞭解程式設計邏輯的Python初學者閱讀。
Thumbnail
看更多
你可能也想看
Thumbnail
學習Python核心語法,從變數、資料型態到物件導向程式設計,涵蓋15個重要技巧,並包含實例與說明,助你快速建立程式基礎。
Thumbnail
學習Python核心語法,從變數、資料型態到物件導向程式設計,涵蓋15個重要技巧,並包含實例與說明,助你快速建立程式基礎。
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這篇文章介紹物件導向程式設計(OOP)的基本概念,包括類和物件的定義以及四大核心概念:封裝、繼承、多型和抽象。讀者將瞭解如何在Python中定義類和物件,並學習如何使用這些OOP特性來構建更具組織性和可維護性的程式碼。透過實例,文章探討如何將真實世界的物件模擬到程式設計中。
Thumbnail
這篇文章介紹物件導向程式設計(OOP)的基本概念,包括類和物件的定義以及四大核心概念:封裝、繼承、多型和抽象。讀者將瞭解如何在Python中定義類和物件,並學習如何使用這些OOP特性來構建更具組織性和可維護性的程式碼。透過實例,文章探討如何將真實世界的物件模擬到程式設計中。
Thumbnail
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
本篇文章探討了Python中的字串、列表、元組、集合與字典這五種資料類型的定義與基本操作。這些資料類型各具特點,例如字串和元組是不可變的,列表和集合是可變的,適合不同的使用場景。文章中詳細介紹如何定義進行基本的操作(如添加、刪除、訪問元素等)。
Thumbnail
在第十五課中,我們將探索 Python 的基礎物件導向程式設計 (OOP) 概念。 物件導向程式設計是一種設計和組織程式碼的方法,它強調使用物件來表示資料和功能。
Thumbnail
在第十五課中,我們將探索 Python 的基礎物件導向程式設計 (OOP) 概念。 物件導向程式設計是一種設計和組織程式碼的方法,它強調使用物件來表示資料和功能。
Thumbnail
在第十一課中,我們將討論 Python 中的類別 (Classes) 和物件導向程式設計 (Object-Oriented Programming, OOP) 的概念。 物件導向程式設計是一種實現真實世界物件在程式中的模擬方式,這有助於更好地組織和管理程式碼。
Thumbnail
在第十一課中,我們將討論 Python 中的類別 (Classes) 和物件導向程式設計 (Object-Oriented Programming, OOP) 的概念。 物件導向程式設計是一種實現真實世界物件在程式中的模擬方式,這有助於更好地組織和管理程式碼。
Thumbnail
天啊!怎麼這麼混亂!網路上有一卡車的文章在談class、object、instance有什麼不同;在Stack Overflow中,關於object和instance間的差異,也一再有人問起。只是啊只是,看了一大堆的討論、解釋,似乎是懂了,但又總覺得不踏實,就好像漂蕩在太空中,明明目標就在眼前,但無
Thumbnail
天啊!怎麼這麼混亂!網路上有一卡車的文章在談class、object、instance有什麼不同;在Stack Overflow中,關於object和instance間的差異,也一再有人問起。只是啊只是,看了一大堆的討論、解釋,似乎是懂了,但又總覺得不踏實,就好像漂蕩在太空中,明明目標就在眼前,但無
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News