類別
什麼是類別
類別是一種自訂資料型態,如同int, str等資料型態
所有關於該資料型態的操作都能自行決定
類別 -> 物件
物件是基於類別創建出來的實際成品
類別 | 物件 |
---|---|
str | “Hello world!” |
int | 114514 |
list | [1, 2, 3] |
可想像類別是模板或一種資料型態,創建完不會發生任何事
需要使用類別來創建一個物件才可以用
屬性與方法
屬性與方法是類別專屬的功能
可以想像成類別自己擁有的變數和函數
語法
此處以車輛生產或使用為情境
通常類別的名稱字首會大寫,如Car, Model等
基本類別
1 | class Car: |
屬性
def __init__()
是一個特殊初始化的函數
在類別被呼叫變成一個物件的時候會執行
可以利用這個函數來動態決定創建的物件有什麼屬性
此處接受輸入品牌與型號
在初始化函數時,自身的brand
和model
被賦予了輸入的值
self
的就是自己的意思,如果需要在一個物件內取用關於自己的資訊,就需要用self
此處由於我們修改了自己的屬性,有取用到關於自己的資訊
方法
此處我們定義了一個方法display_info()
,可以取用自己的屬性,然後組合成字串印出來
實際使用
1 | print(mycar.brand) # Toyota |
可看出取用物件內的資料,方法是
- 先指定哪一個物件
- 用
.
代表取用內部 - 內部屬性或方法
其實並不複雜,跟一般取用變數或函數一樣的概念
進階: 繼承
可以讓新的類別模板擁有舊模板的內容,同時也擁有自己的新內容
1 | class ElectricCar(Car): # 定義時加上(舊類別)來繼承 |
父類別
被繼承的類別稱為父類別,繼承的稱為子類別super()
可以取用父類別的內容
為了避免太專業化,以下僅稱「舊的」
舊類別的取用
新的類別會覆蓋掉舊類別的同名屬性與方法
在這裡,我們對電動車額外新增了一個__init__()
如果要設定品牌和型號,需要舊類別的初始化,但在這裡會被覆蓋掉
所以我們使用super().__init__(brand, model)
去取用舊類別的初始化來處理這兩個參數
下方的display_info()
的概念也一樣,你做了一個新的同名函式之後,舊的並不會生效,需要你去特別調用
上課簡報
可能需等待字體與內容載入
可憐的高中生🤯 設計的 Python 類別本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 Discord 機器人教學!