Não entendi o porquê existe @classmethod e @staticmethod. O que eles modificam no código e quando usar?
Não entendi o porquê existe @classmethod e @staticmethod. O que eles modificam no código e quando usar?
Ambos são utilizados para você acessar um método da classe, sem precisar criar uma instância dela, porém eles tem algumas diferenças entre si.
O @clasmethod é um método de classe, que tem acesso aos atributos da classe ** Esse método também pode ser chamado por uma instância da classe. O @staticmethod funciona como uma função qualquer, e ela não acessa os atributos da classe.
Geralmente utilizo @classmethod e @staticmethod para criar funções utilitárias que todas as classes tem acesso, que não precisam de uma instância, por exemplo escrever um log, ou enviar um e-mail, etc. De forma simplificada, quando preciso que que o método acesse os atributos da classe uso @classmethod, se o método não precisa acessar nenhum atributo da classe utilizo @staticmethod.