No caso desse código, como foi definido um método próprio para exibir o nome e os dados dos restaurantes, não precisaria do método __str__
né?
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}'
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()