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 - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- Python常見面試題006 類方法、類例項方法、靜態方法有何區別?Python面試題
- [Python 基礎] Python 例項方法、靜態方法和類方法詳解 (包含區別和用法)Python
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- 靜態工廠方法和例項工廠方法
- vue 快速入門 系列 —— 例項方法(或 property)和靜態方法Vue
- 你真的瞭解靜態方法與例項方法的區別麼?
- 靜態方法和例項方法的區別以及如何恰當使用
- Python中類方法和例項方法有什麼區別?Python
- 例項 靜態 類
- Java開發筆記(六十四)靜態方法引用和例項方法引用Java筆記
- net 靜態方法與非靜態方法
- Java靜態方法和例項方法 java中的陣列作為形參傳入Java陣列
- 『無為則無心』Python物件導向 — 58、類方法和靜態方法Python物件
- Java的方法靜態方法Java
- 靜態方法
- 14 #### 方法分類與使用場景(繫結、靜態、類方法)
- 微課|中學生可以這樣學Python(7.3.3節):成員方法、類方法、靜態方法Python
- 類的靜態屬性和方法
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- 靜態域與靜態方法
- 初學Python過程中,例項方法和類方法的區別是什麼?Python
- python例項方法中self的作用Python
- Python靜態方法,其實暗藏玄機Python
- Java類、物件以及(靜態)方法的探討Java物件
- 詳解Python物件導向程式設計之類、例項、方法Python物件程式設計
- python呼叫方法必須例項化麼Python
- 管理 Windows 例項的高效方法 —— 使用 WindowExtensions 類Windows
- JavaScript 靜態屬性與靜態方法JavaScript
- javaSE-day04--ArrayList基本用方法、類內定義方法和方法過載、靜態方法static(類的方法)、工具方法(static)的定義和使用Java
- python入門基礎(14)--類的屬性、成員方法、靜態方法以及繼承、過載Python繼承
- php例項化物件的例項方法PHP物件
- 介面中的預設方法與靜態方法
- Promise 原始碼:靜態方法Promise原始碼
- Object上的靜態方法Object
- static靜態方法的使用
- java中String類常用方法的使用與例項Java
- python繼承和重寫init方法--例項Python繼承
- python中time庫的例項使用方法Python