私はそれらが何をするかを知っており、両方の例をたくさん見てきましたがclassmethod
、staticmethod
.
classmethod
私が見た最も一般的な例は、次のようにクラス自体の新しいインスタンスを作成することです (非常に単純化された例で、メソッド atm. は使用されていませんが、アイデアはわかります):
class Foo:
@classmethod
def create_new(cls):
return cls()
Foo
これは、 を呼び出したときにの新しいインスタンスを返しますfoo = Foo.create_new()
。代わりにこれを使用できないのはなぜですか:
class Foo:
@staticmethod
def create_new():
return Foo()
まったく同じことを行いますが、なぜ aclassmethod
よりも a を使用する必要があるのstaticmethod
ですか?