【開發者筆記】python中的類方法(@classmethod)和靜態方法(@staticmethod)


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM