Python的 函數、類方法、實例方法、靜態方法


一、知識點^_^

  • 函數:我一般習慣把跟類無關叫成函數,而類裏面實現的叫方法。
  • 類方法:也叫類型方法,在該方法上一行,用@classmethod進行標記。
    第一個參數強制爲cls,類對象。可以通過這個類對象訪問類屬性,由於沒有傳入類實例對象,所以不能訪問類實例屬性。
  • 靜態方法:用@staticmethod標記的方法。無內定的參數,類和實例都可以調用,方法有多少參數就必須傳遞多少參數。
  • 實例方法:沒有@classmethod@staticmethod標記的方法是實例方法。
    第一個參數強制爲self,類實例對象。可以通過這個類實例對象訪問類屬性,可以通過類實例對象的__class__屬性訪問類屬性。
    假設該方法有n個參數,類型調用的時候需要給n個參數傳參。而實例調用時則只能傳n-1個參數,因爲第一個參數被系統默認傳遞了實例本身。

二、舉例說明

先來了解一下綁定的概念。

  • 綁定binding:它與方法調用相關聯。
    首先該方法是類內部定義的函數,是類方法屬性。
    類方法中,第一個參數都是self,表示調用此方法的實例對象,不需要賦值。
    且該方法只有在其所屬類擁有實例對象時,才能被調用,即方法綁定到類實例對象上了。
    沒有類實例對象時,方法就是未綁定狀態。

上代碼:

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()

1、 一般方法
此方法的工作跟類、實例均無關係。可以直接調用foo(x)。
2、 實例方法
在類裏定義實例方法時第一個參數永遠是實例變量self(綁定類的實例),實例方法的調用離不開實例,調用:a.foo(x),其中a是A的實例。
3、 類方法 @classmethod
類方法定義時需要去綁定類(即通過cls)。調用的時候傳遞的是類,調用:A.class_foo(x),其中A是類。
4、 靜態方法@staticmethod
與普通方法一樣,不需要對類或實例進行綁定,but調用時需要通過類或實例,調用:a.static_foo(x)或A.static_foo(x)。


❤ thanks for watching, keep on updating...
點個贊再走吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章