Зачем использовать метод класса вместо статического метода? [Дубликат]
На этот вопрос уже есть ответ здесь:
В чем разница между @staticmethod и @classmethod? 23 ответаЯ знаю, что они делают, и я видел много примеров того и другого, но я не нашел ни одного примера, где бы мне пришлось использовать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()
Он делает то же самое, почему я должен когда-либо использоватьclassmethod
черезstaticmethod
?