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


1、知識點^_^

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

2、舉例說明

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

  • 綁定binding:它與方法調用相關聯。
    首先該方法是類內部定義的函數,是類方法屬性。
    類方法中,第一個參數都是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

相關文章
相關標籤/搜索