いつ@classmethodを使用する必要があり、いつdef method(self)を使用する必要がありますか?
これまで使用したことのないDjangoアプリを統合しているときに、クラスで関数を定義するために使用される2つの異なる方法を見つけました。作者は両方とも非常に意図的に使用しているようです。最初のものは私自身がよく使うものです: class Dummy(object): def some_function(self,*args,**kwargs): do something here self is the class instance もう1つは、私が使用しないものです。これは主に、いつ使用するのか、何のために使用するのかがわからないためです。 class Dummy(object): @classmethod def some_function(cls,*args,**kwargs): do something here cls refers to what? Pythonのドキュメントでは、classmethodデコレータは次の文で説明されています。 クラスメソッドは、インスタンスメソッドがインスタンスを受け取るのと同じように、暗黙の最初の引数としてクラスを受け取ります。 したがって、私clsはDummyそれ自体を参照していると思います(classインスタンスではなく、)。私はいつでもこれを行うことができたので、なぜこれが存在するのか正確には理解していません: type(self).do_something_with_the_class これは明確にするためだけですか、それとも私は最も重要な部分を見逃しましたか?それなしでは実行できない不気味で魅力的なことですか?