Abaixo apenas o código do restaurante.py
O trabalho todo eu compartilhei no Github, pelo link https://github.com/Yhamerith/oo-sabor-express.git
from modelos.avaliacao import Avaliacao
class Restaurante:
'''
Representa as características de um restaurante
'''
restaurantes = []
def __init__(self, nome, categoria):
'''
Instância do restaurante e Nome e Categoria
'''
self._nome = nome.title()
self._categoria = categoria.upper()
self._ativo = False
self._avaliacao = []
Restaurante.restaurantes.append(self)
def __str__(self):
'''
Representação, em String, dos restaurantes
'''
return f'{self._nome} | {self._categoria}'
@classmethod
def listar_restaurantes(cls):
'''
Lista demonstrativa dos restaurantes
'''
print(f'{'Nome do Restaurante'.ljust(25)} | {'Categoria'.ljust(25)} | {'Avaliação'.ljust(25)} | {'Status'}')
for r in cls.restaurantes:
print(f'{r._nome.ljust(25)} | {r._categoria.ljust(25)} | {str(r.media_avaliacoes).ljust(25)} | {r.ativo}')
@property
def ativo(self):
'''
Status do restaurante
'''
return '☑' if self._ativo else '☐'
def alternar_status(self):
'''
Função que permite alteração no status do restaurante
'''
self._ativo = not self._ativo
def receber_avaliacao(self, cliente, nota):
'''
Função que define as regras para receber a avaliação
'''
if 0 < nota <= 5:
avaliacao = Avaliacao(cliente, nota)
self._avaliacao.append(avaliacao)
@property
def media_avaliacoes(self):
'''
Função que acumula todas as avaliações enviadas pela função acima e calcula a média
'''
if not self._avaliacao:
return '*'
soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
quantidade_de_notas = len(self._avaliacao)
avaliacao_real = round(soma_das_notas / quantidade_de_notas, 1)
return avaliacao_real