在java、c#等高級語言中我們用static來定義靜態方法和靜態變量,那么在python中如何定義靜態方法和靜態變量呢。
python提供了@classmethod和@staticmethod來定義靜態方法,剛接觸的時候不太明白,Stack Overflow提供了一個比較方便理解的解釋,Stack Overflow回答。
但是看完還是不太理解,於是自己寫了個實例:
class stclass(): d=1 #對象方法 def imethod(self): print(self) print("instance method") #類方法 @classmethod def cmethod(cls): print(cls) print("class method") #靜態方法 @staticmethod def smethod(): print("static method") sc = stclass() sc.imethod() sc.cmethod() sc.smethod()
運行結果如下:
然后就可以解釋了:
1、實例方法,該實例屬於對象,該方法的第一個參數是當前實例,擁有當前類以及實例的所有特性。
2、類方法,該實例屬於類,該方法的第一個參數是當前類,可以對類做一些處理,如果一個靜態方法和類有關但是和實例無關,那么使用該方法。
3、靜態方法,該實例屬於類,但該方法沒有參數,也就是說該方法不能對類做處理,相當於全局方法。