iT邦幫忙

2024 iThome 鐵人賽

DAY 13
1
Python

從概念到應用:Python實戰開發學習之旅系列 第 13

[Day12] 第二週 - 進階工程師的開端 - Class 與物件導向

  • 分享至 

  • xImage
  •  

今日目標

今天的目標很明確
其實就是向大家介紹物件導向以及Python Class的介紹

其實很多工程師都互推薦OOP學習C++或是Java
因為Python的私有方法也是可以存取!?
不過今天不會講到這麼細,存粹是把物件導向功能帶給大家看

https://ithelp.ithome.com.tw/upload/images/20240927/20121052f5TnMD2Vv3.png

Python的 Class

https://ithelp.ithome.com.tw/upload/images/20240927/20121052TY0qZldfpy.png

名詞解釋:

1.Class(類別): Class class的名稱(可自行定義)

ClassName: 是 Python 中的類別,是 OOP 的基本單位,用來定義物件的藍圖。類別定義了物件的屬性(變數)和行為(方法)。

2.Class Attribute(類別屬性):

class_attribute = "這是類別屬性": 類別屬性是定義在類別中的變數,屬於整個類別共享的,無論有多少實例,都共用這個屬性。

會寫在init之外的變數,像是上圖中的Class Attribute,他可以建立class的時候呼叫這個共同屬性

3.Instance Attribute(實例屬性):

self.attribute1 = parameter1: 實例屬性是與某個具體實例相關的變數,每個實例有獨立的屬性值。實例屬性是在 init 方法中定義的,透過 self 關鍵字與具體的物件綁定。

4.Method(方法):

def method1(self): 和 def method2(self, additional_parameter):: 方法是定義在類別內的函數,用來執行特定的操作。方法可以存取和修改實例屬性,也可以接收其他參數來進行運算。

5.init Method(初始化方法):

def init(self, parameter1, parameter2)::這是類別的構造函數,當創建類別實例時自動調用,用來初始化實例屬性。self 是指向該實例的參考。

6.Self(自身):
self: 是一個指向實例本身的參考,通過它可以存取實例屬性和方法。每個方法的第一個參數都是 self,這樣方法可以操作該實例的數據。

7.Object(物件/實例):
my_object = ClassName("值1", "值2"): 這是從類別 ClassName 創建的一個實例或物件。物件是類別的具體實例,擁有類別定義的屬性和方法。

8.Method Invocation(方法調用):

my_object.method1(): 使用 . 操作符來調用實例的屬性和方法。

雖然上面文謅謅的定義一堆
但是我們可以透過架構圖~來看看我們的基礎結構是怎麼設計的

https://ithelp.ithome.com.tw/upload/images/20240927/20121052snSWyGMn6O.png

OOP 概念總結:

  • 封裝(Encapsulation): 將屬性和方法封裝在類別中,只允許通過物件訪問,避免直接修改內部數據。
  • 繼承(Inheritance): 子類別可以從父類別繼承屬性和方法(在此範例中未示範)。
  • 多型(Polymorphism): 相同方法在不同類別中有不同表現形式(未示範)。
  • 物件(Object): 類別的實例,擁有類別的屬性和方法。

其實總結很簡單,就是當你有個共同的規格定義:車子(卡車、轎車、電動車) 動物(貓、狗) 這個就可以是一個class(類別)

舉個範例

如果你是車子Class Car (toyato你想要定義它的品牌、型號、年份、顏色) ,再給他一個方法來展示這些屬性要怎麼做呢

  1. 你可能有類別屬性 : Class Car 的屬性是 : name = "汽車"
  2. 初始話就可以把這些外部傳來的屬性傳進去使用
  3. 最後可以定義方法,比如說我們叫做display_specs
  4. 建立一個變數car他是camery然後再把這些屬性塞進去,展示出來
class Car:
    # 類別屬性(所有車的共通特徵)
    class_attribute = "汽車"

    def __init__(self, make, model, year, color):
        # 初始化實例屬性(配備規格)
        self.make = make      # 汽車品牌
        self.model = model    # 汽車型號
        self.year = year      # 出廠年份
        self.color = color    # 汽車顏色

    def display_specs(self):
        # 方法,用來展示汽車的規格
        print(f"這輛車是 {self.year} 年的 {self.color} {self.make} {self.model}。")

# 主程式
if __name__ == "__main__":
    # 創建Car類別的實例,並傳入規格參數
    my_car = Car("Toyota", "Camry", 2022, "白色")
    
    # 調用方法來展示汽車的規格
    my_car.display_specs()  # 輸出: 這輛車是 2022 年的 白色 Toyota Camry。

tips1. 大家可以看到init裡面有個self的參數 ,其實不要想得太複雜可以把他想成建立當下的自己。比如剛剛的範例中。說你創造了一台車,但是你在這個規格表裡面車的屬性是什麼? 這時候你可以想像成self.model就是我這台車的型號 。

tips2. 至於後面的變數就是外面傳進來定義的屬性喔

總結

今天我們學會了Class的建立
其實就很像是定義需求書一樣的概念~

把這個規格長好在傳入師傅定義的屬性
來建立實體~


上一篇
[Day11] 第二週 - 進階工程師的開端 - 標準函式庫的應用
下一篇
[Day13] 第二週 - 進階工程師的開端 - 物件導向之三大特性
系列文
從概念到應用:Python實戰開發學習之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言