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

Erros nas linhas - oo-sabor-express

Restaurante

from modelo.avaliacao import Avaliacao

class Restaurante:
    restaurantes = []

    def __init__(self, nome, categoria):
        self._nome = nome.title()
        self._categoria = categoria.upper()
        self._ativo = False
        self._avaliacao = []
        Restaurante.restaurantes.append(self)
    
    def __str__(self):
        return f'{self._nome} | {self._categoria}'
    
    @classmethod
    def listar_restaurantes(cls):
        print(f'{'Nome do restaurante'.ljust(25)} | {'Categoria'.ljust(25)} | {'Avaliação'.ljust(25)} |{'Status'}')
        for restaurante in cls.restaurantes:
            print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {str(restaurante.media_avaliacoes).ljust(25)} |{restaurante.ativo}') **#erro linha 21**
    
    @property
    def ativo(self):
        return '⌧' if self._ativo else '☐'

    def alternar_estado(self):
        self._ativo = not self._ativo

    def receber_avalicao(self, cliente, nota):
        avalicao = Avaliacao(cliente, nota)
        self._avaliacao.append(avalicao)

    @property
    def media_avaliacoes(self):
        if not self._avaliacao:
            return 0
        soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao) **#erro linha 38**
        quantidade_de_notas = len(self._avaliacao)
        media = round(soma_das_notas / quantidade_de_notas, 1)
        return media

App

from modelo.restaurante import Restaurante

restaurante_praca = Restaurante('praça','gourmet')
restaurante_praca.receber_avalicao('Pe', 5)
restaurante_praca.receber_avalicao('Gui', 4)
restaurante_praca.receber_avalicao('Emy', 5)
#restaurante_mexicano = Restaurante('Mexican Food','Mexicana')
#restaurante_japones = Restaurante('Japa','Japonesa')

#restaurante_mexicano.alternar_estado()

def main():
    Restaurante.listar_restaurantes() **#erro linha 13**

if __name__ == '__main__':
    main()  **#erro linha 16**

Avaliação

class Avaliacao:
    def __init__(self, cliente, nota):
        self._cliente = cliente
        self._note = nota

Erro

PS C:---\oo-sabor-express> python app.py Nome do restaurante | Categoria | Avaliação |Status Traceback (most recent call last):

File "C:---\oo-sabor-express\app.py", line 16, in main()

File "C:---\oo-sabor-expresss\app.py", line 13, in main Restaurante.listar_restaurantes()

File "C:---\oo-sabor-express\modelo\restaurante.py", line 21, in listar_restaurantes print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {str(restaurante.media_avaliacoes).ljust(25)} |{restaurante.ativo}') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:---\oo-sabor-express\modelo\restaurante.py", line 38, in media_avaliacoes soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "C:---\oo-sabor-express\modelo\restaurante.py", line 38, in soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao) ^^^^^^^^^^^^^^^

AttributeError: 'Avaliacao' object has no attribute '_nota'. Did you mean: '_note'?

2 respostas
solução!
class Avaliacao:
    def __init__(self, cliente, nota):
        self._cliente = cliente
        self._note = nota # para funcionar da forma que esta o codigo renomei aqui para self._nota = nota

Agora entendi, o que é para alterar.

Mas já está assim:

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

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