1. 程式人生 > >classmethod和staticmethod區別

classmethod和staticmethod區別

sel ati sta 習慣 pri span () 類方法 定義

實例方法:在類中,定義的方法,這個方法的第一個參數默認是實例對象,一般習慣使用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()

classmethod和staticmethod區別