例項方法 靜態方法 類方法

2021-08-20 11:24:33 字數 1299 閱讀 6787

首先新建乙個日期date類,屬性為年,月,日,tomorrow()是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self

當我們傳入的年月日是2018-6-4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包

這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串預處理,所以我們可以將其寫成靜態方法

在這裡,使用靜態方法有乙個缺點就是:在return date(int(year), int(month), int(day))這行**中我們採用了硬編碼方式,當我們修改了類的名字,這裡的類名date就得修改,那我們使用類方法重寫下

我們使用類方法後,date就變成了cls,當我們修改類名的時候,不必再修改類方法

從書寫形式,能不能在其方法中訪問例項屬性和類屬性,能不能被類和例項訪問三個角度總結下(耐心看,文字有點多,但不難理解)

總結:

1、例項方法:第乙個引數是例項物件self

通過self引用的可能是類屬性、也有可能是例項屬性(這個需要具體分析),不過在存在相同名稱的類屬性和例項屬性的情況下,例項屬性優先順序更高

2、靜態方法:修飾器@staticmethod來標識其為靜態方法

靜態方法不需要多定義引數,這也就存在上述的硬編碼的缺點

靜態方法中引用類屬性的話,必須通過類物件來引用,不能訪問例項屬性

能夠通過例項物件和類物件去訪問類方法

3、類方法:   修飾器@classmethod來標識其為類方法

第乙個引數必須是類物件,一般以cls作為第乙個引數

通過cls引用的必定是類物件的屬性和方法,不能訪問例項屬性

能夠通過例項物件和類物件去訪問類方法

類方法,例項方法,靜態方法

python 中的三種方法,有三種類方法,例項方法,靜態方法,這三種方法都在類中,區別在於呼叫的方式不同。例項物件能的呼叫這三種方法,類只能呼叫類方法和靜態方法。class foo object def init self,name self.name name deford func self 定...

例項方法 類方法 靜態方法

示例方法 第乙個引數為self,必須例項化之後才能呼叫的方法 類方法 使用 classmethod進行裝飾,第乙個引數為cls,可以被類呼叫,也可以被例項呼叫。靜態方法 使用 staticmethod進行裝飾,沒有固定的引數,可以被類呼叫,也可以被例項呼叫,一般可以說跟類和例項沒有關係。classa...

靜態方法 類方法 例項方法

靜態方法 類方法 例項方法 靜態方法 作用 靜態方法可以更好的組織 防止 變大後變得比較混亂。特性 靜態方法只是名義上歸類管理,實際上在靜態方法裡訪問不了類或者例項中的任何屬性 類方法 作用 無需例項化直接被類呼叫 特性 類方法只能訪問類變數,不能訪問例項變數 屬性方法 作用 屬性方法把乙個方法變成...