在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、靜態方法,該實例屬於類,但該方法沒有參數,也就是說該方法不能對類做處理,相當於全局方法。
