標籤:self 定義 span ssm 運行 size stat 方法 def
為了辨析它們的差別,寫了如下代碼:
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 @staticmethod11 def static_method(a):12 return a13 14 def method(a):15 return a16 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‘))
因此:
- 執行個體方法定義時第一個參數為類的一個執行個體(self),調用時必須通過執行個體調用。可以訪問執行個體屬性和方法。
- 類方法使用@classmethod裝飾,第一個參數為類(cls),調用時可以通過類的執行個體或者類本身來調用。可以訪問類屬性和方法。
- 靜態方法使用@staticmethod裝飾,調用時可以使用類的執行個體或者類本身來調用。
- 普通方法其實是在類中定義了一個普通函數,調用時必須通過類本身來調用。
Python中的執行個體方法、類方法、靜態方法和普通方法