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.