classmethod和staticmethod區別


 

 

 

實例方法:在類中,定義的方法,這個方法的第一個參數默認是實例對象,一般習慣使用self
類方法:在類中,定義的方法,這個方法的第一個參數默認是類對象,一般習慣用cls表示,用@classmethod裝飾器裝飾
靜態方法:在類中定義的方法,這個方法的參數沒有要求,用@staticmethod裝飾器裝飾
實例方法只能被實例(對象)調用
類方法和靜態方法可以被類或者實例調用


class Foo(object):  
  
    # 實例方法,第一個參數必須是實例對象。一般習慣用self。  
    def instance_method(self):  
        print("是類{}的實例方法,只能被實例對象調用".format(Foo))  
  
    # 類方法, 第一個參數必須是類 對象。一般習慣使用cls。使用@classmethod裝飾器裝飾。  
    @classmethod  
    def class_method(cls):  
        print("是類方法")  
  
    # 靜態方法,參數沒有要求,和類沒有綁定關系,就是一個普通的方法            使用@staticmethod裝飾器裝飾。  
    @staticmethod  
    def static_method():  
        print("是靜態方法")  
  
  
foo = Foo()  
  
# 實例方法只能被實例調用。  
foo.instance_method()  
  
print('----------')  
  
# 類方法可以被類或者實例調用。  
Foo.class_method()  
foo.class_method()  
  
print('----------')  
  
# 靜態方法可以被類或者實例調用。  
Foo.static_method()  
foo.static_method()  

 


免責聲明!

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



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