Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Qual a diferença entre os métodos estáticos e das classes?

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.

2 respostas
solução!

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. 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!!