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

