Python 速查手冊- 6.5 static 方法與類別方法 - 程式語言教學誌
文章推薦指數: 80 %
本篇文章介紹Python 類別的static 方法與類別方法。
... static 方法(static method) 與類別方法(class method) 都是透過類別(class) 名稱呼叫,然而兩者不同的 ...
Python速查手冊
6.5static方法與類別方法
static方法(staticmethod)與類別方法(classmethod)都是透過類別(class)名稱呼叫,然而兩者不同的是static方法不帶預設參數(parameter),這是說如果static方法要用到類別屬性(classattribute)的話,一樣要用類別名稱使用。
static在C-Style的程式語言中多半是關鍵字(keyword),這些程式語言裡static的用途也不完全一樣,至於Python的類別方法及static方法都是用內建函數(built-infunction)來處理,而static並不是Python的關鍵字,特此說明。
先來看到類別方法的簡單定義,這裡Demo類別的demo()方法準備當作類別方法,如果要讓demo()變成類別方法,就要用demo當內建函數classmethod()的參數,然後取得回傳值(returnvalue)指派給demo
classDemo:
i=0
defdemo(cls):
print(cls.i)
demo=classmethod(demo)
Demo.demo()
#《程式語言教學誌》的範例程式
#http://kaiching.org/
#檔名:static01.py
#功能:示範定義類別
#作者:張凱慶
於命令列執行以上程式,結果如下
$python3static01.py
0
$
static方法的定義也一樣,要換成用內建函數staticmethod(),留意static方法沒有預設參數
classDemo2:
i=1
defdemo():
print(Demo2.i)
demo=staticmethod(demo)
Demo2.demo()
#《程式語言教學誌》的範例程式
#http://kaiching.org/
#檔名:static02.py
#功能:示範定義類別
#作者:張凱慶
於命令列執行以上程式,結果如下
$python3static02.py
1
$
如果直接用裝飾子(decorator)加在類別方法的上一行,類別方法就不需要用demo當內建函數classmethod()參數的回傳值,定義上就更清楚了
classDemo3:
i=2
@classmethod
defdemo(cls):
print(cls.i)
Demo3.demo()
#《程式語言教學誌》的範例程式
#http://kaiching.org/
#檔名:static03.py
#功能:示範定義類別
#作者:張凱慶
於命令列執行以上程式,結果如下
$python3static03.py
2
$
同樣如果用裝飾子加在static方法的上一行,這也簡化static方法的定義
classDemo4:
i=3
@staticmethod
defdemo():
print(Demo4.i)
Demo4.demo()
#《程式語言教學誌》的範例程式
#http://kaiching.org/
#檔名:static04.py
#功能:示範定義類別
#作者:張凱慶
於命令列執行以上程式,結果如下
$python3static04.py
3
$
注意static方法就像是透過類別名稱呼叫的函數(function),因此在static方法中使用類別屬性要用類別名稱,使用實體屬性也要建立物件(object)實體(instance),如此例Demo5類別的static方法demo印出類別屬性i及實體屬性j的值,類別屬性i是直接用類別名稱Demo5取得,實體屬性j則是用Demo5後面加上小括弧,也就是Demo5的建構子回傳的實體物件,再加上小數點取得實體屬性j
classDemo5:
i=4
def__init__(self):
self.j=5
@staticmethod
defdemo():
print(Demo5.i)
print(Demo5().j)
Demo5.demo()
#《程式語言教學誌》的範例程式
#http://kaiching.org/
#檔名:static05.py
#功能:示範定義類別
#作者:張凱慶
於命令列執行以上程式,結果如下
$python3static05.py
4
5
$
相關教學影片
Python類別的類別屬性與類別方法⇨YouTube頁面連結
Python類別的static方法⇨YouTube頁面連結
上一頁:6.4類別屬性與實體屬性
Python速查手冊-目錄
下一頁:6.6封裝
回Python教材首頁
回程式語言教材首頁
延伸文章資訊
- 1Python OOP物件導向設計的類型方法(Instance, Class, Static ...
類別方法(Class Method)可以存取類別,可以呼叫類別本身,用來製作替代的建構子。而靜態方法(Static Method)無法存取物件與類別,它獨立於物件或類別以外 ...
- 2類別 - Python 程式設計
類別Class. ▷ Python中所有東西都是物件,凡是物件都有屬性. (attribute) 跟方法(method) 。 ▷ 所謂的屬性雷同變數(variable) ,專屬於物件。 ▷ 方法...
- 39. Class(類別) — Python 3.10.7 說明文件
Class 實例也可以有一些(由其class 所定義的)method(方法),用於修改該實例 ... Python 的class 提供了所有物件導向程式設計(Object Oriented Pr...
- 4Python-45-物件導向10.建立類別方法、呼叫類別方法 - - 點部落
建立類別方法 呼叫類別方法. ... Python-45-物件導向10. ... def info(self): #類別方法info函式調用class類別的變數 print("訂購人:",sel...
- 5Python 速查手冊- 6.5 static 方法與類別方法 - 程式語言教學誌
本篇文章介紹Python 類別的static 方法與類別方法。 ... static 方法(static method) 與類別方法(class method) 都是透過類別(class) 名稱...