分别用一句話解釋:
執行個體方法:在類中,定義的方法,這個方法的第一個參數預設是執行個體對象。一般習慣使用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()
參考文獻:
1.python類的靜态方法和類方法差別