Importante

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!

1
resposta

[Dúvida] Método de classe

uma dúvida com relação aos enunciados da aula 3 item 7: no exercicio 3 é pedido para criar um método de classe chamado "ativar_conta". Um método de classe não deveria ser aquele utilizado com o decorator @classmethod? Da para entender que é um método que age sobre o objeto, porém acho que a forma como está escrita, não é de fato o conceito do método de classe.

Se eu estiver enganado, poderia me explicar por favor?

Obrigado.

1 resposta

Olá Henrique.
Tudo bem?
Sua observação está correta e demonstra atenção aos conceitos de Orientação a Objetos em Python.
Tecnicamente, quando falamos em "método de classe" em Python, estamos nos referindo a um método decorado com @classmethod, que recebe cls como primeiro parâmetro e atua sobre a própria classe, e não sobre uma instância específica.
Exemplo:

class Restaurante:
    ativo = False

    @classmethod
    def ativar_conta(cls):
        cls.ativo = True

Já um método que recebe self como primeiro parâmetro é um método de instância, pois atua sobre um objeto específico:

class Restaurante:
    def ativar_conta(self):
        self.ativo = True

Pelo que você descreveu, parece que o enunciado utilizou o termo "método de classe" em um sentido mais genérico, referindo-se a um método pertencente à classe Restaurante, mas não necessariamente ao conceito técnico de @classmethod.
Nesse contexto, o objetivo provavelmente era criar um método que alterasse o estado de uma instância específica do restaurante, utilizando self, e não um método de classe no sentido formal da linguagem Python.
Portanto, sua interpretação está correta: se o método foi implementado para atuar sobre um objeto específico, então ele é um método de instância, mesmo que o enunciado o tenha chamado de "método de classe". Isso pode ser considerado uma simplificação da linguagem utilizada no exercício ou uma pequena imprecisão terminológica.
Parabéns por questionar esse detalhe. Esse tipo de análise mostra que você está indo além da implementação e buscando compreender os conceitos de forma precisa, o que é fundamental para evoluir em programação orientada a objetos.
Avise qualquer dúvida.
Bons estudos.