我知道他们做了什么,并且我已经看到了很多这两个例子,但是我还没有找到一个我必须使用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()
它完全一样,我为什么要使用 a classmethod
over a staticmethod
?