(2018-04-02.Python從Zero到One)三、Python基礎(chǔ)__3.7.9靜態(tài)方法和類方法

上一篇文章為:→3.7.8類屬性、實例屬性

靜態(tài)方法和類方法

1. 類方法

是類對象所擁有的方法,需要用修飾器@classmethod來標(biāo)識其為類方法,對于類方法,第一個參數(shù)必須是類對象,一般以cls作為第一個參數(shù)(當(dāng)然可以用其他名稱的變量作為其第一個參數(shù),但是大部分人都習(xí)慣以'cls'作為第一個參數(shù)的名字,就最好用'cls'了),能夠通過實例對象和類對象去訪問。

class People(object):
    country = 'china'

    #類方法,用classmethod來進(jìn)行修飾
    @classmethod
    def getCountry(cls):
        return cls.country

p = People()
print p.getCountry()    #可以用過實例對象引用
print People.getCountry()    #可以通過類對象引用

類方法還有一個用途就是可以對類屬性進(jìn)行修改:

class People(object):
    country = 'china'

    #類方法,用classmethod來進(jìn)行修飾
    @classmethod
    def getCountry(cls):
        return cls.country

    @classmethod
    def setCountry(cls,country):
        cls.country = country

p = People()
print p.getCountry()    #可以用過實例對象引用
print People.getCountry()    #可以通過類對象引用

p.setCountry('japan')   

print p.getCountry()   
print People.getCountry()

day08_python面向?qū)ο?2-01.png

結(jié)果顯示在用類方法對類屬性修改之后,通過類對象和實例對象訪問都發(fā)生了改變

2. 靜態(tài)方法

需要通過修飾器@staticmethod來進(jìn)行修飾,靜態(tài)方法不需要多定義參數(shù)

class People(object):
    country = 'china'

    @staticmethod
    #靜態(tài)方法
    def getCountry():
        return People.country

print People.getCountry()

總結(jié)

從類方法和實例方法以及靜態(tài)方法的定義形式就可以看出來,類方法的第一個參數(shù)是類對象cls,那么通過cls引用的必定是類對象的屬性和方法;而實例方法的第一個參數(shù)是實例對象self,那么通過self引用的可能是類屬性、也有可能是實例屬性(這個需要具體分析),不過在存在相同名稱的類屬性和實例屬性的情況下,實例屬性優(yōu)先級更高。靜態(tài)方法中不需要額外定義參數(shù),因此在靜態(tài)方法中引用類屬性的話,必須通過類對象來引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容