我知道他们做了什么,我见过很多这两个例子,但我还没有找到一个例子,我不得不使用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