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'?