類方法
類方法是從屬於「類物件」的方法,它與類的例項方法是不一樣的,它只從屬於類物件本身。類方法主要對類屬性進行操作,例項方法主要對例項屬性進行操作。
類方法通過裝飾器@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 方法的入口位...