python類方法和靜態(tài)方法詳解
類方法
需要用裝飾器@classmethod來標(biāo)識其為類方法,對于類方法,第一個(gè)參數(shù)必須是類對象,一般以cls作為參數(shù)
使用場景
1當(dāng)方法中需要使用類對象(如訪問私有類屬性)時(shí),定義類方法
2類方法一般和類屬性配合使用
# 需要用裝飾器@classmethod來標(biāo)識其為類方法,對于類方法,第一個(gè)參數(shù)必須是類對象,一般以cls作為參數(shù) # 使用場景 # 1當(dāng)方法中需要使用類對象(如訪問私有類屬性)時(shí),定義類方法 # 2類方法一般和類屬性配合使用 class Dog(object): __tooth = 10 t=10 #修改私有屬性 @classmethod def getooth(cls, c): cls.__tooth = c return cls.__tooth #得到私有屬性 def get(self): return self.__tooth ww = Dog() cc=Dog() result1=ww.get() #10 result2 = ww.getooth(100) #100 result3=ww.get() #100 result4=cc.get() #100成功修改私有屬性 print(result1, result2,result3,result4 )
如果去掉@classmethod后,就無法修改私有類屬性,result4 變成了10
self,和cla只是名詞,可以更換其它名字,@不可去掉
靜態(tài)方法
1特點(diǎn)
需要通過修飾器@staticmethod來修飾,靜態(tài)方法既不需要傳遞實(shí)例對象,也不需要傳遞類對象(形參沒有sslf/cls)
靜態(tài)方法也可以通過類對象和實(shí)例對象去訪問
2使用場景
當(dāng)方法中既不需要使用實(shí)例對象(如實(shí)例屬性,實(shí)例方法),也不需要使用類對象(如類屬性、類方法、創(chuàng)建實(shí)例等時(shí),定義靜態(tài)方法
取消不需要的參數(shù)傳遞,有利于減少不必要的內(nèi)存占用和性能消耗
#1特點(diǎn) #需要通過修飾器@staticmethod來修飾,靜態(tài)方法既不需要傳遞實(shí)例對象,也不需要傳遞類對象(形參沒有sslf/cls) #靜態(tài)方法也可以通過類對象和實(shí)例對象去訪問 #2使用場景 #當(dāng)方法中既不需要使用實(shí)例對象(如實(shí)例屬性,實(shí)例方法),也不需要使用類對象(如類屬性、類方法、創(chuàng)建實(shí)例等時(shí),定義靜態(tài)方法 #取消不需要的參數(shù)傳遞,有利于減少不必要的內(nèi)存占用和性能消耗 class Dog(object): @staticmethod def static(): print("這是一個(gè)靜態(tài)方法") dog=Dog() dog.static() #這是一個(gè)靜態(tài)方法 Dog.static() #這是一個(gè)靜態(tài)方法
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式示例
pytest提供了許多運(yùn)行命令以供定制化運(yùn)行某一類測試用例或者某個(gè)測試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12將python依賴包打包成window下可執(zhí)行文件bat方式
今天小編就為大家分享一篇將python依賴包打包成window下可執(zhí)行文件bat方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python接口自動化(十六)--參數(shù)關(guān)聯(lián)接口后傳(詳解)
這篇文章主要介紹了python接口自動化參數(shù)關(guān)聯(lián)接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python爬蟲之快速對js內(nèi)容進(jìn)行破解
這篇文章主要介紹了python爬蟲之快速對js內(nèi)容進(jìn)行破解,到一般js破解有兩種方法,一種是用Python重寫js邏輯,一種是利用第三方庫來調(diào)用js內(nèi)容獲取結(jié)果,這次我們就用第三方庫來進(jìn)行js破解,需要的朋友可以參考下2019-07-07Python中MySQLdb和torndb模塊對MySQL的斷連問題處理
這篇文章主要介紹了Python中MySQLdb和torndb模塊對MySQL的斷連問題處理,torndb使用起來相對更加簡潔一些,需要的朋友可以參考下2015-11-11Pyqt QImage 與 np array 轉(zhuǎn)換方法
今天小編就為大家分享一篇Pyqt QImage 與 np array 轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python Pygame實(shí)現(xiàn)兔子獵人守護(hù)城堡游戲
這篇文章主要介紹了用python來制作的一個(gè)守護(hù)類小游戲兔子獵人守護(hù)城堡,文中的示例代碼介紹得很詳細(xì),感興趣的小伙伴快來跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12python中Pyqt5使用Qlabel標(biāo)簽進(jìn)行視頻播放
這篇文章主要介紹了python中Pyqt5使用Qlabel實(shí)現(xiàn)標(biāo)簽進(jìn)行視頻播放,QLabel是界面中的標(biāo)簽類,繼承自QFrame類,提供文本和圖像的顯示,是一種展示控件,下文相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下2022-04-04