Я знаю, что они делают, и видел много примеров того и другого, но я не нашел ни одного примера, в котором мне пришлось бы использовать 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
?