1
resposta

Tem um exemplo de cada um melhor para entender?

Alguém tem um código de exemplo que dê para entender melhor a diferença entre eles?

Rodando os códigos do texto consigo chamar o método tanto direto da classe quanto instanciando um objeto. Ainda não me ficou clara qual é a diferença de um para o outro, o que rodaria usando um dos dois que não rodaria usando o outro...

1 resposta

Olá, Alex! Tudo bem? Vamos lá!

Os métodos de classe são métodos que estão ligados à classe e não à instância da classe. Eles podem modificar o estado da classe que irá afetar todas as instâncias dessa classe. Por exemplo:

class MinhaClasse:
    contador = 0

    @classmethod
    def incrementa_contador(cls):
        cls.contador += 1
        return cls.contador

print(MinhaClasse.incrementa_contador())  # Retorna: 1
print(MinhaClasse.incrementa_contador())  # Retorna: 2

Neste exemplo, o método de classe incrementa_contador está modificando o estado da classe MinhaClasse. Todas as instâncias de MinhaClasse verão o mesmo valor para contador.

Por outro lado, os métodos estáticos são mais como funções utilitárias. Eles não podem modificar o estado da classe. Eles são usados quando você precisa de alguma funcionalidade que está relacionada à classe, mas que não precisa modificar o estado da classe. Por exemplo:

class MinhaClasse:
    @staticmethod
    def soma(a, b):
        return a + b

print(MinhaClasse.soma(1, 2))  # Retorna: 3

Neste exemplo, o método estático soma não modifica o estado da classe MinhaClasse. Ele simplesmente faz algo útil que está relacionado à classe.

Espero que isso ajude a esclarecer a diferença entre métodos de classe e métodos estáticos. Lembre-se, métodos de classe podem modificar o estado da classe, enquanto métodos estáticos não podem. Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software