Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Devo criar um @staticmethod para listar_restaurantes?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, João! Tudo joia?

Faz sentido, sim, transformar o método listar_restaurantes em um @staticmethod. Isso porque ele não utiliza a instância da classe (ou seja, não usa self), mas sim a variável de classe restaurantes.

Para transformar o método em um método estático, você pode usar o decorador @staticmethod. Veja como ficaria:

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self.nome = nome
        self.categoria = categoria
        self.ativo = False
        Restaurante.restaurantes.append(self)
    
    def __str__(self):
        return f'{self.nome} | {self.categoria}'
    
    @staticmethod
    def listar_restaurantes():
        for restaurante in Restaurante.restaurantes:
            print(f'{restaurante.nome} | {restaurante.categoria} | {restaurante.ativo}')

restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiana')

Restaurante.listar_restaurantes()

Com essa modificação, o método listar_restaurantes não precisa mais de um parâmetro self e pode ser chamado diretamente pela classe, como você já estava fazendo.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.