看書看到這裡有些費解,雖然書中并沒用重點介紹,但是還是希望可以搞清楚一些。
靜态方法:無需self參數,能被類本身和類執行個體調用,但不能通路執行個體變量,用staticmethod類型對象包裝(Python 2.4之前)
類成員方法:需要類似于self的cls參數,能被類本身和類執行個體調用,可以通路執行個體變量,用classmethod類型對象包裝
執行個體方法:必須有self參數,不能被類本身調用(必須綁定到一個執行個體上)
Python 2.4之後引入一個包裝方法:裝飾器(@)
class mClass(object):
InstanceVariable = 3
def __init__(self):
self.value1 = 1
def insmeth(self):
self.value2 = 2
print self.InstanceVariable + self.value1 + self.value2 , self
@staticmethod
def smeth():
value3 = 3
# print InstanceVariable 不可引用執行個體變量
print value3
@classmethod
def cmeth(cls):
cls.value4 = 4
print cls.value4 + cls.InstanceVariable , cls #可引用執行個體變量
if __name__ =='__main__':
mClass.smeth() # 靜态方法
mClass.cmeth() # 類方法
m = mClass()
m.insmeth() # 執行個體方法
運作結果為:
3
7 <class '__main__.mClass'>
6 <__main__.mClass object at 0x024EA3D0>
寫在後面,關于自己的了解幾乎沒有,都是書上和一些部落格的内容。今後随着學習的深入,會逐漸加入自己的了解。