Eu entendi cada um mas não consigo entender as diferenças exatas entre eles, além do argumento fixo "cls" que é necessário no método da classe.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Eu entendi cada um mas não consigo entender as diferenças exatas entre eles, além do argumento fixo "cls" que é necessário no método da classe.
Olá Diego! Tudo bom?
Os métodos estáticos e os métodos de classe são diferentes em relação ao seu comportamento e ao acesso aos atributos da classe.
Um método estático é aquele que não tem acesso aos atributos da classe e nem precisa de uma instância da classe para ser chamado. Ele é definido utilizando o decorador @staticmethod. Um exemplo prático seria um método que realiza um cálculo matemático, como calcular a raiz quadrada de um número. Esse método não precisa acessar nenhum atributo da classe e pode ser chamado diretamente, sem a necessidade de criar uma instância da classe.
Já um método de classe é aquele que tem acesso aos atributos da classe, mas não precisa de uma instância específica da classe para ser chamado. Ele é definido utilizando o decorador @classmethod e recebe como primeiro parâmetro o próprio objeto da classe, por convenção chamado de cls. Um exemplo prático seria um método que retorna a quantidade total de instâncias criadas de uma classe. Esse método precisa acessar um atributo da classe que mantém o controle do número de instâncias criadas.
Portanto, a diferença principal entre os métodos estáticos e os métodos de classe está no acesso aos atributos da classe e na necessidade de criar uma instância da classe para chamá-los.
Gostaria de deixar como indicação o Discord de alunos e alunas, onde você pode estar interagindo e criando networking com outras pessoas que estudam aqui na Alura, compartilhando conhecimento e trocando experiências. Caso tenha interesse, deixo a seguir um link de convite para o Discord e o link de um vídeo ensinando como usá-lo.
Em caso de dúvidas, me coloco à disposição.
Grande abraço e bons estudos!
Entendi! Basicamente a diferença é no acesso aos atributos da classe e a necessidade ou não de uma instância da classe. Obg!!