Python例項方法、類方法、靜態方法
例項方法,類方法,靜態方法都可以通過例項或者類呼叫,只不過例項方法通過類呼叫時需要傳遞例項的引用(python 3可以傳遞任意物件,其他版本會報錯)
1. 例項方法針對的是例項,第一個引數是self,普通物件方法至少需要一個self引數,代表類物件例項;
2. 類方法針對的是類,@classmethod 它表示接下來的是一個類方法,類方法的第一個引數cls,它們都可以繼承和重新定義;
3. 靜態方法用於作為程式中的共享資源,直接通過類去呼叫,不用例項化物件,不需要self引數,可以認為是全域性函式,@staticmethod 它表示接下來的是一個靜態方法
示例:
class Test1(object):
#定義例項方法
def test1(self):
print "object"
#定義類方法
@classmethod
def test2(cls):
print"class"
#定義靜態方法
@staticmethod
def test3():
print "static"
#子類覆蓋父類的類方法
class Test2(Test1):
@classmethod
def test2(cls):
print cls
print "test2 object"
#例項方法呼叫-1
f1=Test1()#建立例項物件f1
f1.test1()#呼叫例項方法
#例項方法呼叫-2
Test1.test1(f1)#另一種呼叫例項的方法
print "-------------"
#類方法通過例項呼叫-1
f1.test2()
#類方法通過類呼叫-2(不需傳遞例項的引用)
Test1.test2()
print "-------------"
#靜態方法使用例項呼叫-1
f1.test3()
#靜態方法靜態方式呼叫-2
Test1.test3()
print "-------------"
Test2.test2() #如果子類覆蓋了父類的類方法,最終呼叫的是子類的類方法,並傳遞子類的類物件
執行結果如下:
注意:
1.Python中嚴格區分大小寫。
2.如果子類覆蓋了父類的類方法,最終呼叫的是子類的類方法,並傳遞子類的類物件。
相關文章
- Python Class 的例項方法/類方法/靜態方法Python
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- javascript 靜態方法和例項方法例項JavaScript
- Python常見面試題006 類方法、類例項方法、靜態方法有何區別?Python面試題
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- [Python 基礎] Python 例項方法、靜態方法和類方法詳解 (包含區別和用法)Python
- js--Object的靜態方法和例項方法JSObject
- Python 靜態方法和類方法的區別Python
- Python的靜態方法和類成員方法Python
- javascript的靜態方法和例項方法簡單介紹JavaScript
- vue 快速入門 系列 —— 例項方法(或 property)和靜態方法Vue
- 你真的瞭解靜態方法與例項方法的區別麼?
- 靜態方法和例項方法的區別以及如何恰當使用
- c#通過反射動態執行類的例項及靜態方法C#反射
- net 靜態方法與非靜態方法
- 物件導向2--靜態方法、類方法、屬性方法物件
- 靜態方法查詢類名
- Python中類方法和例項方法有什麼區別?Python
- Java開發筆記(六十四)靜態方法引用和例項方法引用Java筆記
- Python (類)例項方法的特殊屬性Python
- 靜態方法
- Java的方法靜態方法Java
- 14 #### 方法分類與使用場景(繫結、靜態、類方法)
- Java靜態方法和例項方法 java中的陣列作為形參傳入Java陣列
- 類的靜態屬性和方法
- 『無為則無心』Python物件導向 — 58、類方法和靜態方法Python物件
- 微課|中學生可以這樣學Python(7.3.3節):成員方法、類方法、靜態方法Python
- JNI/NDK開發指南(6):C/C++訪問Java例項方法和靜態方法C++Java
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- 靜態變數與靜態方法變數
- Java類、物件以及(靜態)方法的探討Java物件
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- Python的靜態方法和類成員方法都可以被類或例項訪問,兩者概念不容易理清,但還是有區別的Python
- eclipse 匯入靜態類,自動程式碼提示靜態方法Eclipse
- JavaScript 靜態屬性與靜態方法JavaScript
- 初學Python過程中,例項方法和類方法的區別是什麼?Python
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- Python靜態方法,其實暗藏玄機Python