關於Python中靜態方法、例項方法、類方法、普通方法
阿新 • • 發佈:2019-01-28
從簡,不浪費時間,直接用例子講解:
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),第一個引數必須是例項本身。類方法也是如此,但是靜態方法不用傳入引數,此外普通函式只有類能訪問,物件不能訪問