Coloquei o cls, mas começou a dar este erro:
cls.restaurantes = []
^^^
NameError: name 'cls' is not defined
fiz a substituição de todos os restauranes por cls.restaurantes, e incluí como argumento do class method:
class Restaurante:
cls.restaurantes = []
#criando construtor
#self é a referência atual do objeto que estamos usando (é um nome convencionado)
def __init__(self, nome, categoria): #esta é uma função reservada "dunder method", já existente em toda classe
#aqui definimos os atributos (características) da classe (uma entidade)
self._nome = nome.title()
self.categoria = categoria
# _ativo não foi declarado.
self._ativo = False #com o _ antes de 'ativo', estamos indicando que este é um atributo privado. não queremos que ninguem o altere
Restaurante.cls.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self.categoria}'
# Método da classe. e não do objeto
@classmethod
def listar_restaurantes(cls): #Convenção usar argumento cls
print(f'{'Nome do restaurante'.ljust(25)} | {'Categoria'.ljust(25)} | {'Status'}')
for restaurante in Restaurante.cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {restaurante.ativo}')