python呼叫方法必須例項化麼
python類中的例項方法和靜態方法,在呼叫時,是有區別的。靜態方法可以直接被呼叫,而不需要被例項化。
類方法和靜態方法的區別在於,Python會自動繫結類方法的第一個引數,類方法的第一個引數(通常建議引數名為 cls)會自動繫結到類本身;但對於靜態方法則不會自動繫結。
使用 @classmethod 修飾的方法就是類方法;使用 @staticmethod 修飾的方法就是靜態方法。
下面程式碼示範了定義類方法和靜態方法:
class Bird: # classmethod修飾的方法是類方法 @classmethod def fly (cls): print('類方法fly: ', cls) # staticmethod修飾的方法是靜態方法 @staticmethod def info (p): print('靜態方法info: ', p) # 呼叫類方法,Bird類會自動繫結到第一個引數 Bird.fly() #① # 呼叫靜態方法,不會自動繫結,因此程式必須手動繫結第一個引數 Bird.info('crazyit') # 建立Bird物件 b = Bird() # 使用物件呼叫fly()類方法,其實依然還是使用類呼叫, # 因此第一個引數依然被自動繫結到Bird類 b.fly() #② # 使用物件呼叫info()靜態方法,其實依然還是使用類呼叫, # 因此程式必須為第一個引數執行繫結 b.info('fkit')
推薦學習《》
從上面粗體字程式碼可以看出,使用 @classmethod 修飾的方法是類方法,該類方法定義了一個 cls 引數,該引數會被自動繫結到 Bird 類本身,不管程式是使用類還是物件呼叫該方法,Python 始終都會將類方法的第一個引數繫結到類本身,如 ① 號、② 號程式碼的執行效果。
上面程式還使用 @staticmethod 定義了一個靜態方法,程式同樣既可使用類呼叫靜態方法,也可使用物件呼叫靜態方法,不管用哪種方式呼叫,Python 都不會為靜態方法執行自動繫結。
在使用 Python 程式設計時,一般不需要使用類方法或靜態方法,程式完全可以使用函式來代替類方法或靜態方法。但是在特殊的場景(比如使用工廠模式)下,類方法或靜態方法也是不錯的選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2835223/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python使用ctypes呼叫擴充套件模組的例項方法Python套件
- php例項化物件的例項方法PHP物件
- Python通過ctypes呼叫C程式例項PythonC程式
- Python中類方法和例項方法有什麼區別?Python
- Python例項方法、類方法、靜態方法Python
- PHP呼叫Webservice例項PHPWeb
- 一個例項中,多個synchronized方法的呼叫synchronized
- 款項為什麼必須走財務審批流程
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- 限定建構函式必須使用new呼叫函式
- 必須讓你一看就能明白系列之———JavaScript 中 new 例項化物件的實現原理?JavaScript物件
- Python Class 的例項方法/類方法/靜態方法Python
- 關於python呼叫zabbix api介面的自動化例項 [結合saltstack]薦PythonAPI
- python例項方法中self的作用Python
- python類例項化如何實現Python
- python必須安裝pip嗎Python
- Oracle 例項啟動必須的引數分析(2010-05-06)Oracle
- jQuery鏈式呼叫例項分析jQuery
- RFC 同步非同步呼叫例項非同步
- JNI/NDK開發指南(8):呼叫構造方法和父類例項方法構造方法
- Python (類)例項方法的特殊屬性Python
- 什麼是字串?Python中字串必須加引號嗎?字串Python
- 核心必須懂(一):用系統呼叫列印Hello,world!
- 為什麼Java的main方法必須是public static void?JavaAI
- python中類的建立和例項化Python
- Java介面為什麼不能例項化Java
- 初學Python過程中,例項方法和類方法的區別是什麼?Python
- 你必須學習的10項.NET技術
- GO和Python有什麼區別?這十點必須知道!GoPython
- python中time庫的例項使用方法Python
- python繼承和重寫init方法--例項Python繼承
- 網頁版微信介面呼叫例項網頁
- 你必須懂的前端效能優化前端優化
- Python裝飾器例項:呼叫引數合法性驗證Python
- python--介面自動化鑑權例項Python
- Python中類建立和例項化過程Python
- 【Python】Python方法求水仙花數原碼例項Python
- 學習Python,這些你必須搞懂!Python