1. 程式人生 > >關於Python中靜態方法、例項方法、類方法、普通方法

關於Python中靜態方法、例項方法、類方法、普通方法

從簡,不浪費時間,直接用例子講解:

 class A(object):  
        def kkk(self,x):    #例項方法,類和例項都能訪問  
            print(self,x)  
        @classmethod    #加上這句後 classKkk就成為了類方法,類和例項都可以訪問,  
        def classKkk(cls,x):  
            print(cls,x)  
        @staticmethod   #加上這句就成為了靜態方法,類和例項都可以訪問。  
        def staticKkk(x):  
            print(x)  
        def mmm(x):     # 這是無敵普通函式  
            print(x)  
    A.classKkk(2)  
    #   <class '__main__.A'> 2 這裡類A可以直接訪問類方法classKkk,但是不能訪問例項方法kkk(會報錯的)。  
    A.kkk(A,1)  #<class '__main__.A'> 1 類要訪問例項方法需要加入引數,至於這個引數可以是A也可以是A()  
    A.staticKkk(3)  #   3 這裡類A也可以訪問靜態方法staticKkk,  
    A.mmm(3) #  3 物件可以訪問無敵普通函式  
    a = A()  
    a.kkk(5)    # <__main__.A object at 0x0000028A64394CC0> 5 例項訪問例項方法,沒毛病  
    a.classKkk(6)   #   <class '__main__.A'> 6 例項訪問類方法,沒毛病  
    a.staticKkk(7)  #   7  
    a.mmm(7)    # 報錯,例項不能訪問普通函式  
      

    #總結:例項方法和類方法一定要傳入引數,a.kkk(x)相當於kkk(a,x),第一個引數必須是例項本身。類方法也是如此,但是靜態方法不用傳入引數,此外普通函式只有類能訪問,物件不能訪問