为什么要使用类方法而不是静态方法?
为什么要使用类方法而不是静态方法?
这个问题已经有了答案:
静态方法和类方法的区别
我知道它们的作用,并且我已经看过许多两者的例子,但是我没有找到一个单独使用 staticmethod
无法替代 classmethod
的例子。
我看到 classmethod
最常见的例子是用于创建类本身的新实例,像这样(非常简化的示例,目前该方法没有用处,但你可以理解):
class Foo: @classmethod def create_new(cls): return cls()
当调用 foo = Foo.create_new()
时,这将返回 Foo
的一个新实例。那么为什么我不能只使用这个呢:
class Foo: @staticmethod def create_new(): return Foo()
它完全相同,为什么我应该使用 classmethod
而不是 staticmethod
?