實例方法指的是 只有實例對象才可以 調用的方法。
在類對象中定義實例方法時,第一個形參表示調用該方法的實例對象,其對應的實參由系統自動傳入。
第一個形參的名稱通常是 self ,self不是關鍵字,而是Python約定成俗的命名,你完全可以取別的名字,但建議這么做。
實例方法只能被實例對象所調用,有兩種調用方式:
-
在類對象的內部
語法:self.方法名([實參]) -
在類對象外部
語法:實例對象.方法名([實參])
調用實例方法時,系統自動將調用該實例方法的實例對象作為實參傳遞給第一個形參。
第一個實參傳遞給第二個形參,第二個實參將會傳給第三個形參,以此類推。
實例方法最大的特點就是最少要包含一個 self 參數,該self參數的作用是綁定調用此方法的實例對象。
class MyClass(object):
# 定義實例方法
def get_info(self, par1, par2):
print(par1, par2)
def get_other(self):
# 在類對象內部調用實例方法:get_info
self.get_info(1, 2)
# 實例化
res = MyClass()
res.get_info(3, 4)
res.get_other()
-
實例方法的第一個參數通常為self,它用來引用和調用實例。
-
在類中定義方法和定義普通的函數沒有太大區別:
class People(object):
owner = "ren" # 類屬性
def __init__(self, name, sex, age=18):
self.name = name # 實例屬性
self.age = age # 實例屬性
self.sex = sex
def voice(self): # 實例方法
print("我的名字是{},我{}歲了!".format(self.name, self.age))
p = People("張三", "女")
p.voice() # 我的名字是張三,我18歲了!
類方法
類方法指類對象中使用裝飾器 @classmethod 進行裝飾的方法。
在類對象定義類方法時,必須使用裝飾器 @classmethod 進行裝飾,第一個形參代表類對象,
其對應的實參由系統自動傳入。
第一個形參的名稱通常是 cls
類方法可以被類對象調用。
語法:類對象.方法名([]實參) 或者 self.方法名([實參])
調用類方法時,系統自動將類對象作為實參傳遞給第一個形參。
第一個實參傳遞給第二個形參...
class MyClass(object):
# 定義類方法
@classmethod
def func_a(cls, par1, par2):
print(par1, par2)
@classmethod
def func_b(cls):
# 通過類對象調用類方法
MyClass.func_a(1, 2) # 1 2
cls.func_a(1, 2) # 1 2
def get_info(self):
self.func_a(3, 4)
# 通過類對象調用類方法
# MyClass.func_a(8, 9) # 8 9
# 通過實例對象調用類方法
mc = MyClass()
# mc.func_a(4, 5) # 4 5
#
mc.func_b()
mc.get_info() # 3 4
匯總
實例方法
定義:第一個參數必須是實例對象,該參數名一般約定為“self”,通過它來傳遞實例的屬性和方法(也可以傳類的屬性和方法);
調用:只能由實例對象調用。
類方法
定義:使用裝飾器@classmethod。第一個參數必須是當前類對象,該參數名一般約定為“cls”,通過它來傳遞類的屬性和方法(不能傳實例的屬性和方法);
調用:類和實例對象都可以調用。
-----分界線------
我們所看到的回報都有時間延時,
所以看不見的時候才需要信仰,
因為我們總是擔心付出沒有回報。