Dive Into Pythonで、MarkPilgrimは次のように述べています。
クラスメソッドを定義するときは、各メソッドの最初の引数として自分自身を明示的にリストする必要があります
次に、彼はこれのいくつかの例をコードで示します。
def clear(self): self.data.clear()
def copy(self):
if self.__class__ is UserDict:
return UserDict(self.data)
import copy
return copy.copy(self)
@classmethod
オンラインでPythonコードを調べているときに、デコレータに出くわしました。その例は次のとおりです。
class Logger:
@classmethod
def debug(msg):
print "DEBUG: " + msg
self
(関数にパラメーターがないことに注意してくださいdebug
)
self
最初のパラメーターとして使用するクラスメソッドと@classmethod
デコレーターを使用するクラスメソッドの定義に違いはありますか?そうでない場合、クラスメソッドを定義する1つの方法は、他の方法よりも一般的に使用/優先されますか?