¿Por qué usar el método de clase en lugar del método estático? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Cuál es la diferencia entre @staticmethod y @classmethod? 23 respuestasSé lo que hacen y he visto muchos ejemplos de ambos, pero no he encontrado un solo ejemplo en el que tendría que usarclassmethod
en lugar de reemplazarlo con unastaticmethod
.
El ejemplo más común declassmethod
He visto espara crear una nueva instancia de la clase en sí, como esta (ejemplo muy simplificado, no se usa el método atm. pero se entiende):
class Foo:
@classmethod
def create_new(cls):
return cls()
Esto devolvería una nueva instancia deFoo
al llamarfoo = Foo.create_new()
. Ahora por qué no puedo usar esto en su lugar:
class Foo:
@staticmethod
def create_new():
return Foo()
Hace exactamente lo mismo, ¿por qué debería usar unclassmethod
sobre unstaticmethod
?