1. 程式人生 > >Python中的實例方法、類方法、靜態方法和普通方法

Python中的實例方法、類方法、靜態方法和普通方法

turn 屬性和方法 靜態方法 一個 def col == pre 類屬性

 為了辨析它們的差別,寫了如下代碼: 
 1 class C:
 2 
 3     def self_method(self, a):
 4         return a
 5 
 6     @classmethod
 7     def class_method(cls, a):
 8         return a
 9 
10     @staticmethod
11     def static_method(a):
12         return a
13 
14     def method(a):
15         return a
16 
17 if __name__ == ‘__main__‘:
18
  c = C() 19   print(c.self_method(self method)) 20   print(c.class_method(class method)) 21   print(c.static_method(static method)) 22   # print(c.method(‘method‘)) 運行出錯 23   # print(C.self_method(‘self method‘)) 運行出錯 24   print(C.class_method(class method)) 25   print(C.static_method(static method
)) 26   print(C.method(method))

因此:

  1. 實例方法定義時第一個參數為類的一個實例(self),調用時必須通過實例調用。可以訪問實例屬性和方法。
  2. 類方法使用@classmethod裝飾,第一個參數為類(cls),調用時可以通過類的實例或者類本身來調用。可以訪問類屬性和方法。
  3. 靜態方法使用@staticmethod裝飾,調用時可以使用類的實例或者類本身來調用。
  4. 普通方法其實是在類中定義了一個普通函數,調用時必須通過類本身來調用。

Python中的實例方法、類方法、靜態方法和普通方法