1
resposta

[Projeto] Apresentação final

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
1 resposta

Oi, Gabriel! Tudo bem?

Boa! Parabéns pelo desenvolvimento do projeto e muito obrigada por ter o compartilhado com a nossa comunidade, tenho certeza que irá inspirar e ajudar muitos colegas! É muito bacana poder acompanhar a sua evolução! Qualquer dúvida, sinta-se à vontade em comunicar por aqui, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!