20201130 094 類方法 靜態方法

2021-10-11 01:40:37 字數 1349 閱讀 7221

類方法

類方法是從屬於「類物件」的方法,它與類的例項方法是不一樣的,它只從屬於類物件本身。類方法主要對類屬性進行操作,例項方法主要對例項屬性進行操作。

類方法通過裝飾器@classmethod 來定義,格式如下:

@classmethod

def 類方法名(cls [,形參列表]) :

函式體

要點如下:

@classmethod 必須位於方法上面一行;

第乙個 cls 必須有,cls是class的縮寫,指的就是「類物件」本身;

呼叫類方法格式:「類名.類方法名(引數列表)」。 引數列表中,不需要也不能給 cls 傳值;

類方法中訪問例項屬性和例項方法會導致錯誤,因為例項都還沒生成;

子類繼承父類方法時,傳入 cls 是子類物件,而非父類物件

【案例】類方法使用測試

class

student

: school =

'nk'

@classmethod

defprint_school

(cls)

:print

('學校是:{}'

.format

(cls.school)

)student.print_school(

)

靜態方法

python 中允許定義與「類物件」無關的方法,稱為「靜態方法」。(但是萬一在靜態方法裡面用到類屬性,也是不會報錯的。)

「靜態方法」和在模組中定義普通函式沒有區別,只不過「靜態方法」放到了「類的名字空間裡面」,使用時需要通過「類呼叫」。

靜態方法通過裝飾器@staticmethod 來定義,格式如下:

@staticmethod

def 靜態方法名([形參列表]) :

函式體

要點如下:

@staticmethod 必須位於方法上面一行;

呼叫靜態方法格式:「類名.靜態方法名(引數列表)」;

靜態方法中訪問例項屬性和例項方法會導致錯誤,例項都還沒生成。

【案例】靜態方法使用測試

class

student

: school =

'nk'

@staticmethod

defadd

(a, b)

:# 靜態方法

print

('{}+{}={}'

.format

(a, b, a+b)

)return a+b

student.add(20,

30)

python物件導向之類屬性 類方法以及靜態方法

類屬性 針對類物件定義的屬性 使用賦值語句在class關鍵字下可以定義類屬性 類方法 針對類物件定義的方法 在類方法內部可以直接訪問類屬性或者呼叫其他的類方法 class toy object 使用賦值語句 記錄所有的玩具數量 count 0 def init self,name self.name...

Jmockit如何同時mock多個類的靜態方法

使用jmockit來mock類的靜態方法,網上有很多mock單個類靜態方法的例子。有使用expectations,還有使用mockup的。但是如果想在乙個測試方法中mock多個類的靜態方法,該怎麼寫呢。先看mock乙個類的靜態方法 public class methodclass public st...

關於類的方法 不是類方法 ,類方法指標

關於類的方法 不是類方法 類方法指標 關於類的方法 不是類方法,這裡指object pascal中的靜態方法,相當於c 的成員函式 1 帶有隱含引數 self 2 方法是方法,資料是資料。3 delphi的方法是乙個結構 type tmethod record code pointer 方法的入口位...