我知道他們做了什麼,我見過很多這兩個例子,但我還沒有找到一個例子,我不得不使用classmethod
而不是用staticmethod
代替它。爲什麼使用classmethod而不是staticmethod?
我見過的classmethod
最常見的例子是用於創建新實例的類本身的,像這樣的(很簡單的例子,有沒有使用ATM的方法,但你的想法。):
class Foo:
@classmethod
def create_new(cls):
return cls()
當調用foo = Foo.create_new()
時,將返回一個新的Foo
實例。 現在爲什麼不能我只是用這個代替:
class Foo:
@staticmethod
def create_new():
return Foo()
它不完全一樣的,爲什麼要我曾經使用classmethod
在staticmethod
?
@KevinBrydon對那個頁面上的OP問題沒有*答案*,但它可能在那裏的註釋中。我不知道是否有足夠的理由來解決這個問題 – jamylak 2013-04-23 14:41:59
這個問題不是鏈接問題的重複。鏈接問題的答案沒有說明爲什麼要使用靜態方法的類方法,反之亦然。 – spacetyper 2017-03-14 16:34:38