Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Alguém pode me ajudar AttributeError: 'Restaurante' object has no attribute 'ativo'. Did you mean: '_ativo'? PS C:\Projetos\oo-sabor-express>

class Restaurante:
    
    restaurantes = []

    def __init__(self, nome, categoria, nome_dono, ano_criacao):
        self.nome = nome
        self.categoria = categoria
        self.nome_dono = nome_dono
        self.ano_criacao = ano_criacao
        self._ativo = False
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return (f'{self.nome} | {self.categoria} | {self.nome_dono} | {self.ano_criacao}')
    
    def listar_restaurantes():
        #print(f'{'Nome do restaurante'} | {'Categoria'} | {'Status'} | {'Nome do Dono'} | {'Inauguração'}')
        for restaurante in Restaurante.restaurantes:
            print (f'{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {restaurante.ativo} | {restaurante.nome_dono.ljust(25)} | {restaurante.ano_criacao.ljust(25)}')

@property
def ativo(self):
    return '☒' if self._ativo else '☐'

restaurante_praca = Restaurante('Bistrô', 'Italiana', 'Elisângela', '2023')
restaurante_pizza = Restaurante('Pizza', 'Fast food', 'José', '2000')

Restaurante.listar_restaurantes()

Recebo este retorno do prompt. Alguém saberia como solucionar?

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

5 respostas

Bom dia

Então acredito que na parte de def listar_restaurante(): {restaurante.ativo} faltou o _ {restaurante._ativo}

Pode ver que no prompt ele avisa esse erro.

Att.

Felipe Bazan

Obrigada @ Felipe Bazan do Nascimento por responder.

Realmente quando coloco {restaurante._ativo} funciona, mas a propriedade não funciona no relsultado. @property def ativo(self): return '☒' if self._ativo else '☐'

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

Ainda,

Se eu colocar {restaurante._ativo.ljust(25)} para alinhamento, dá erro.

Segue o meu código atual Insira aqui a descrição dessa imagem para ajudar na acessibilidade

E se colocar o self._ativo no final

Ai não vai precisar o ljust porque como seria o ultimo não tem o porque colocar

Ah e a questão do @property e que ele nao está alinhado pode perceber.

Se der um tab na linha 21 e 22 irá funcionar.

solução!

Oi Felipe Bazan do Nascimento,

Não consegui ainda. Consegue me dizer precisamente aonde está o erro?

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

Bom dia

Então agora o erro esta dando justamente No restaurante._ativo.ljust(25) isso acontece porque o metodo ljust só funciona quando for uma str no caso ._ativo está como boleano eu fiz o código abaixo e funcionou segue abaixo:

class Restaurante:
    
    restaurantes = []

    def __init__(self, nome, categoria, nome_dono, ano_criacao):
        self.nome = nome
        self.categoria = categoria
        self.nome_dono = nome_dono
        self.ano_criacao = ano_criacao
        self._ativo = False
        Restaurante.restaurantes.append(self)

    def __str__(self):
        return (f'{self.nome} | {self.categoria} | {self.nome_dono} | {self.ano_criacao}')
    
    def listar_restaurantes():
      print(f'{"Nome do restaurante".ljust(25)} | {"Categoria".ljust(25)} | {"Nome do Dono".ljust(25)} | {"Inauguração".ljust(25)} | Status ')
      for restaurante in Restaurante.restaurantes:
        print (f'{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {restaurante.nome_dono.ljust(25)} | {restaurante.ano_criacao.ljust(25)} | {restaurante.ativo}')

    @property
    def ativo(self):
      return '☒' if self._ativo else '☐'

restaurante_praca = Restaurante('Bistrô', 'Italiana', 'Elisângela', '2023')
restaurante_pizza = Restaurante('Pizza', 'Fast food', 'José', '2000')

Restaurante.listar_restaurantes()

O que eu mudei foi coloquei o status para ulitmo posição ai consequentemente não preciso coloca o metodo ljust nele

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )