@classmethod
進行標記。cls
,類對象。能夠經過這個類對象訪問類屬性,因爲沒有傳入類實例對象,因此不能訪問類實例屬性。@staticmethod
標記的方法。無內定的參數,類和實例均可以調用,方法有多少參數就必須傳遞多少參數。@classmethod
和@staticmethod
標記的方法是實例方法。self
,類實例對象。能夠經過這個類實例對象訪問類屬性,能夠經過類實例對象的__class__
屬性訪問類屬性。先來了解一下綁定的概念。函數
self
,表示調用此方法的實例對象,不須要賦值。上代碼:code
def foo(x): # 通常方法 print "executing foo(%s)"%(x) class A(object): def foo(self,x): # 實例方法 print "executing foo(%s,%s)"%(self,x) @classmethod # 類方法 def class_foo(cls,x): print "executing class_foo(%s,%s)"%(cls,x) @staticmethod # 靜態方法 def static_foo(x): print "executing static_foo(%s)"%x a=A()
一、 通常方法
此方法的工做跟類、實例均無關係。能夠直接調用foo(x)。
二、 實例方法
在類裏定義實例方法時第一個參數永遠是實例變量self(綁定類的實例),實例方法的調用離不開實例,調用:a.foo(x),其中a是A的實例。
三、 類方法 @classmethod
類方法定義時須要去綁定類(即經過cls)。調用的時候傳遞的是類,調用:A.class_foo(x),其中A是類。
四、 靜態方法@staticmethod
與普通方法同樣,不須要對類或實例進行綁定,but調用時須要經過類或實例,調用:a.static_foo(x)或A.static_foo(x)。對象
❤ thanks for watching, keep on updating...
點個贊再走吧class