Python 類別教學:用一間披薩店,一次搞懂三種方法(self / cls / staticmethod)

更新 發佈閱讀 7 分鐘

在學 Python 的 class 時,很多人都會卡在同一個問題:

❓ 為什麼有的方法要寫 self


❓ 有的要寫 cls


❓ 有的卻什麼都不用?


這不是你不會寫,而是你還沒看懂「責任層級」

可以參考我的影片 或者接下去看文字的部分。


今天我們用一個「連鎖披薩店」的例子,一次把這三種方法講透


一、先看完整範例(等等會一行一行拆)

class Pizza:
total_sold = 0 # 類別屬性:統計全台總銷量

def __init__(self, topping):
self.topping = topping # 實體屬性:這份披薩的配料
Pizza.total_sold += 1

# 1. 實體方法 (Instance Method)
def describe_pizza(self):
print(f"這是一份配料為 {self.topping} 的美味披薩!")

# 2. 類別方法 (Class Method)
@classmethod
def get_total_sold(cls):
print(f"📢 總部報告:全台目前已售出 {cls.total_sold} 份披薩。")

# 3. 靜態方法 (Static Method)
@staticmethod
def is_healthy(ingredient):
healthy_list = ["菠菜", "番茄", "青椒"]
return ingredient in healthy_list

二、先建立一個正確的「心智模型」

在理解語法前,請先記住這張表(非常重要)👇

方法類型在現實中像什麼關心的是誰Instance Method這一份披薩某一個物件Class Method披薩總部整個類別Static Method工具 / 計算機誰都不屬於

👉 method 的差異,不是語法,是「責任歸屬」


三、Instance Method(實體方法):處理「這一個」

程式碼

def describe_pizza(self):
print(f"這是一份配料為 {self.topping} 的美味披薩!")

為什麼一定要有 self

因為你在問的是:

這一份披薩是什麼?」

p1 = Pizza("起司")
p2 = Pizza("菠蘿")

p1.describe_pizza()
p2.describe_pizza()

輸出會不同,因為:

  • self 指向的是 不同的披薩物件
  • 每個物件都有自己的 topping

📌 self = 物件的身份證

沒有它,Python 不知道你在跟誰說話。


四、Class Method(類別方法):處理「整體規則」

程式碼

@classmethod
def get_total_sold(cls):
print(f"📢 總部報告:全台目前已售出 {cls.total_sold} 份披薩。")

為什麼這裡用 cls,而不是 self

因為這個問題是:

「全台一共賣了幾份披薩?」

這跟「某一份披薩」完全無關。

Pizza.get_total_sold()

你是在問 披薩這個類別本身的狀態,也就是:

total_sold = 0

📌 cls 代表的是「這個類別本身」

而不是任何一個實體。


常見錯誤(一定要知道)

❌ 這樣寫雖然能跑,但設計很怪:

def get_total_sold(self):
return Pizza.total_sold

工程師會皺眉,因為:

你明明在問「總部資料」,

為什麼要拿「某一份披薩」來問?

五、Static Method(靜態方法):純工具,不屬於任何人

程式碼

@staticmethod
def is_healthy(ingredient):
healthy_list = ["菠菜", "番茄", "青椒"]
return ingredient in healthy_list

關鍵特徵

  • ❌ 不用 self
  • ❌ 不用 cls
  • ❌ 不讀任何 class / instance 資料
Pizza.is_healthy("菠菜")

那為什麼要放在 class 裡?

這是一個語意選擇

「這個工具,跟披薩這個概念有關。」

📌 如果哪天它跟 Pizza 沒關係了,

👉 它就應該搬出去,變成普通 function。


六、三種方法的「快速判斷法」(請記這個)

當你在寫 method 時,問自己這三個問題👇

✅ 判斷流程

1️⃣ 我需不需要知道「這是誰」?

→ 要 → Instance Method (self)

2️⃣ 我是在處理「全體共用的狀態或規則」?

→ 要 → Class Method (cls)

3️⃣ 我只是提供一個小工具?

→ 是 → Static Method


七、實戰測試程式碼解析

p1 = Pizza("起司")
p2 = Pizza("菠蘿")

每建立一個 Pizza:

  • __init__ 被呼叫
  • Pizza.total_sold += 1

p1.describe_pizza()

👉 跟「這一份披薩」有關

👉 Instance Method


Pizza.get_total_sold()

👉 跟「所有披薩」有關

👉 Class Method


Pizza.is_healthy("菠菜")

👉 不需要披薩、也不需要總部

👉 Static Method



八、為什麼這樣分,程式會「比較不亂」?

因為你在替未來的自己留下線索:

  • Instance Method:
    「這是某個物件的行為」
  • Class Method:
    「這是整個系統的規則」
  • Static Method:
    「這只是工具,不要亂依賴它」

📌 這就是高 cohesion(高內聚)的設計

留言
avatar-img
螃蟹_crab的沙龍
166會員
322內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
螃蟹_crab的沙龍的其他內容
2026/02/02
一、先說結論(先救腦袋) 很多人一開始學 Python 都會問: 「class 是不是一定等於 OOP?」 「不用 class 是不是就不專業?」 ✅ 正確答案是: Python 的 class 主要是用來實現 OOP, 但在實務中,很多 class 並不是在玩「完整 OOP」。 cl
2026/02/02
一、先說結論(先救腦袋) 很多人一開始學 Python 都會問: 「class 是不是一定等於 OOP?」 「不用 class 是不是就不專業?」 ✅ 正確答案是: Python 的 class 主要是用來實現 OOP, 但在實務中,很多 class 並不是在玩「完整 OOP」。 cl
2026/02/02
用 AI 幫你「讀資料、整理重點、變成你的第二顆腦」 左邊為輸入來源,中間你可以跟他對話來產生內容及記事,右邊像工作室,可以根據你的需求產生報告影片摘用等等。 以下是利用它來產生影片上傳到YT的Python基礎影片。 不多不說,內容真讓人驚豔,幾分鐘就將程式語言的概念解釋得清清楚楚。 htt
Thumbnail
2026/02/02
用 AI 幫你「讀資料、整理重點、變成你的第二顆腦」 左邊為輸入來源,中間你可以跟他對話來產生內容及記事,右邊像工作室,可以根據你的需求產生報告影片摘用等等。 以下是利用它來產生影片上傳到YT的Python基礎影片。 不多不說,內容真讓人驚豔,幾分鐘就將程式語言的概念解釋得清清楚楚。 htt
Thumbnail
2026/02/01
一、物件導向(OOP)到底在解決什麼? 一句話版本: 把「資料 + 行為」包在一起,讓程式像真實世界一樣被理解與維護 沒用 OOP 時(程序式) user_name = "Tom" user_age = 20 def say_hi(name): print(f"Hi {name}"
2026/02/01
一、物件導向(OOP)到底在解決什麼? 一句話版本: 把「資料 + 行為」包在一起,讓程式像真實世界一樣被理解與維護 沒用 OOP 時(程序式) user_name = "Tom" user_age = 20 def say_hi(name): print(f"Hi {name}"
看更多
你可能也想看
Thumbnail
  電影立即免費看-弱美男英雄Class 2 開播日期:2025年 播出平台:Netflix 編劇:劉秀民、樸賢佑 導演:劉秀民 主演:樸志訓、厲雲、崔民英、劉秀彬、裴奈拏、李敏宰、李濬榮 劇情介紹: 該劇講述為了朋友而對抗暴力,但最終沒能守護朋友而留下心理創傷的模範生延時恩
Thumbnail
  電影立即免費看-弱美男英雄Class 2 開播日期:2025年 播出平台:Netflix 編劇:劉秀民、樸賢佑 導演:劉秀民 主演:樸志訓、厲雲、崔民英、劉秀彬、裴奈拏、李敏宰、李濬榮 劇情介紹: 該劇講述為了朋友而對抗暴力,但最終沒能守護朋友而留下心理創傷的模範生延時恩
Thumbnail
今日啊壽要教你買股票“網絡化” 點樣可以禁一粒制就可以開拓到美國市場,禁一粒制就開到新加坡市場,禁一粒制開到歐洲市場,呢個就係今日教大家一個“自動吸錢系統” 呢個系統最重要係識得“禁制” ,今日你能夠見都呢個post 我恭喜你,因為呢個係一個限時既post 由你睇到既呢一秒後就會delete,下一秒
Thumbnail
今日啊壽要教你買股票“網絡化” 點樣可以禁一粒制就可以開拓到美國市場,禁一粒制就開到新加坡市場,禁一粒制開到歐洲市場,呢個就係今日教大家一個“自動吸錢系統” 呢個系統最重要係識得“禁制” ,今日你能夠見都呢個post 我恭喜你,因為呢個係一個限時既post 由你睇到既呢一秒後就會delete,下一秒
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
Gloria:「你們先去住我們之前住過的那間share house吧!然後我們已經有找到農場的工作,後天就可以一起上工了!」 只能說Gloria根本是我們這組人馬的「真・leader」!是說到底有誰能在沒做功課的情況下,一來澳洲三天就有工作可以做呢?
Thumbnail
Gloria:「你們先去住我們之前住過的那間share house吧!然後我們已經有找到農場的工作,後天就可以一起上工了!」 只能說Gloria根本是我們這組人馬的「真・leader」!是說到底有誰能在沒做功課的情況下,一來澳洲三天就有工作可以做呢?
Thumbnail
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
Thumbnail
CSS 是用來設計 HTML 文件樣式 的語言,負責 「樣式呈現」的部分,如 字體、顏色、排版、動畫效果等。它決定了 HTML 元素應如何在螢幕上顯示,讓網頁更加美觀且具有吸引力。 本文章內容涵蓋 CSS 的三種引入方式、CSS 的基本設定、盒子模型與 class 選擇器,帶你快速踏入CSS的大門。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
曲博有先回顧前面系列他談到區塊鏈可以等同存摺鏈,也就是一種資料結構,只是為了安全性,我們把它搞得又臭又長,眾人來維護且沒有人可以佔比達51%以上,那麼,這樣的去中心化、不可竄改的方式,我們可以信任吧
Thumbnail
曲博有先回顧前面系列他談到區塊鏈可以等同存摺鏈,也就是一種資料結構,只是為了安全性,我們把它搞得又臭又長,眾人來維護且沒有人可以佔比達51%以上,那麼,這樣的去中心化、不可竄改的方式,我們可以信任吧
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
話說有了帳戶,日後賺得錢就有地方放了;有了「Go card」,在昆士蘭就可以暢行無阻。 但要是沒有SIM卡,那又該怎麼用手機聯絡呢? Victor:「話說,這邊最強的電信應該就是Telstra了!」 Telstra,是澳洲最大的電訊公司同時它也是覆蓋率最廣的一間電訊公司。
Thumbnail
話說有了帳戶,日後賺得錢就有地方放了;有了「Go card」,在昆士蘭就可以暢行無阻。 但要是沒有SIM卡,那又該怎麼用手機聯絡呢? Victor:「話說,這邊最強的電信應該就是Telstra了!」 Telstra,是澳洲最大的電訊公司同時它也是覆蓋率最廣的一間電訊公司。
Thumbnail
啊壽一直都想開一個股票戶口,因為上一次在 IB 抽農夫山泉水時候,竟然有$100認購費,但上一次為了方便都隨便,但發覺這個對之後交易都非常重要, 因此啊壽在膽粗粗的與華盛證券傾合作,幸好對方接納,起碼認購費只是$50,孖展認購$100,暗盤交易免佣金。 這次優惠可以說是特別為《啊壽的投資星球》
Thumbnail
啊壽一直都想開一個股票戶口,因為上一次在 IB 抽農夫山泉水時候,竟然有$100認購費,但上一次為了方便都隨便,但發覺這個對之後交易都非常重要, 因此啊壽在膽粗粗的與華盛證券傾合作,幸好對方接納,起碼認購費只是$50,孖展認購$100,暗盤交易免佣金。 這次優惠可以說是特別為《啊壽的投資星球》
Thumbnail
2024 年,全球資本市場親眼看到一家公司「加速換檔」: Eli Lilly and Company(禮來)的市值,從年初三千多億美元,一路衝到五千多億美元。 進入 2025 年後,這個漲勢不但沒有停,反而進一步加速——第三季財報發布後短短兩週,禮來市值又從約 7,406 億美元跳到接近 9,7
Thumbnail
2024 年,全球資本市場親眼看到一家公司「加速換檔」: Eli Lilly and Company(禮來)的市值,從年初三千多億美元,一路衝到五千多億美元。 進入 2025 年後,這個漲勢不但沒有停,反而進一步加速——第三季財報發布後短短兩週,禮來市值又從約 7,406 億美元跳到接近 9,7
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News