天天看點

我所了解的執行個體方法、類方法(@classmethod)和靜态方法(@staticmethod)(關鍵詞:執行個體方法/類方法/@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()
           

參考文獻:

1.python類的靜态方法和類方法差別