iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Python

從0開始學習Python-為未來學習AI奠定基礎系列 第 14

從0開始學習Python---類別、繼承、多型

  • 分享至 

  • xImage
  •  

類別和物件導向程式設計(一)

類別(Class)

類別用來定義物件應該有什麼屬性,還有它能做什麼事情。

物件(Object)

物件是由類別創建出來的實例,用來具體的實現某個類別,擁有類別中定義的屬性和方法。簡單來說,類別是概念,而物件是這個概念的具體存在,物件可以儲存數據並執行行為。

物件導向程式設計 (OOP) 的重要性

物件導向的好處是可以把程式碼模組化,將資料和行為綁定在一起。


Python 物件導向的基本概念

1. 類別和物件的宣告

首先來看看怎麼定義一個類別,以及如何使用這個類別來創建物件。

https://ithelp.ithome.com.tw/upload/images/20240914/20168994jPgcL76pX2.png
https://ithelp.ithome.com.tw/upload/images/20240914/20168994HobOqZqvi7.png

  • class Car:這裡我們定義了一個名為 Car 的類別,它代表一輛車。
  • __init__ 方法:這個方法叫做「初始化方法」,創建物件時它會自動執行。這個方法接受 brand 和 color 作為參數,並把它們存到物件的 self 中,這樣每個車子物件都會有自己的品牌和顏色。
  • self:self 必須存在在每個方法裡,它代表這個物件的屬性或行為。
  • my_car.drive():呼叫 drive() 方法,這個方法會告訴我們車子正在行駛中,並輸出車子的顏色和品牌。

小專題:動物園管理系統

建立一個簡單的動物園管理系統,在這個系統中,每隻動物都有自己的屬性和行為。

https://ithelp.ithome.com.tw/upload/images/20240914/201689941Itw05yP9m.png
https://ithelp.ithome.com.tw/upload/images/20240914/20168994ZB1JE5v7MR.png

  • Animal 類別:創建 Animal 類別,這個類別描述了動物的基本屬性和行為,會有名字 name 和種類 kind 兩個屬性。
  • __init__ 方法:用這個方法來初始化動物的名字和種類。
  • speak 方法:這個方法根據動物的種類來判斷它會發出什麼聲音。if 條件是用來根據不同的動物種類輸出不同的叫聲,所以我們要創建三個不同的動物物件,並讓它們執行 speak 方法。

更深入的 OOP 概念

2. 繼承(Inheritance)

有時候希望能夠基於一個類別來創建新的類別,這就是繼承。透過繼承,我們可以讓新的類別擁有舊類別的所有屬性和方法,並且還可以在新的類別裡新增屬性或修改方法。

https://ithelp.ithome.com.tw/upload/images/20240914/20168994liI2tyK1fa.png
https://ithelp.ithome.com.tw/upload/images/20240914/20168994ZBeWYFYltu.png

Dog 類別繼承了 Animal,代表著它擁有 Animal 的所有屬性和方法。但是我們在 Dog 裡重寫了 speak() 方法,讓狗可以發出「汪汪」的叫聲。

3. 多型(Polymorphism)

多型的意思是不同的物件可以有相同的方法,但每個物件都可以有自己的實現方式,在不同情況下表現出不同的行為。我們把繼承的題目稍微改變一下:

https://ithelp.ithome.com.tw/upload/images/20240914/20168994ly98nKa6Rw.png
https://ithelp.ithome.com.tw/upload/images/20240914/201689947HY4ldQtrv.png

這裡展示的是狗和貓都有 speak() 方法,但它們叫的聲音可以不一樣。


結語

物件導向程式設計對我來說是一個有點熟悉的概念,因為之前學Java時,也會需要用到父子類別繼承,讓整支程式變得更有組織、更容易維護,避免掉了繁複冗雜的程式碼。

而相同的方法能在不同的類別中被調用,可以在繼承後對原本的方法進行小小的更動,增加了原本方法的多變性。雖然繼承來繼承去對我來說還沒有很上手,但經過了一些例題的練習,的確比我初次看到這個概念時還要更加理解。

明天的文章會繼續介紹類別和物件導向,包括比較複雜的多重繼承和type、instance,然後多練習一些小專題來增加熟練度><


上一篇
從0開始學習Python---函數、最大公因數
下一篇
從0開始學習Python---多重繼承、AI 模擬實驗 - 訓練會飛的 AI 寵物
系列文
從0開始學習Python-為未來學習AI奠定基礎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言