1
resposta

[Projeto] Minha resolução

#sobressa.py
from metodos.cardapio.item_cardapio import Item_Cardapio


class Sobremessa(Item_Cardapio):
    def __init__(self, nome, preco,tipo,tamanho,descricao):
        super().__init__(nome, preco)
        self.tipo=tipo
        self.tamanho=tamanho
        self.descricao=descricao
    def aplicar_desconto(self):
        self._preco-=(self._preco*0.04)
        
               
   #restaurante.py
    @property
    def exibir_cardapio(self):
       print(f'Cardapio do Restaurante: {self._nome}\n')
       for i, item in enumerate(self.cardapio,start=1):
          if hasattr(item,'descricao'):
            mensagem_prato= f'\n{i}.Nome do Prato: {item._nome} | Preço: {item._preco} | Descrição: {item.descricao}'
            print(mensagem_prato)
          elif hasattr(item,'tamanho'):
            mensagem_bebida= f'\n{i}.Nome da Bebida: {item._nome} | Preço: {item._preco} | Tamanho: {item.tamanho}'
            print(mensagem_bebida)     
          else:
             mensagem_sobremsa= f'\n{i}.Nome da Sobremesa: {item._nome} | Preço: {item._preco} | Tipo: {item.tipo} | Tamanho: {item.tamanho} | Descrição: {item.descricao}'
             print(mensagem_sobremsa)  
       
       
       #app.py
from metodos.restaurante import Restaurante
from metodos.cardapio.bebida import Bebida
from metodos.cardapio.prato import Prato
from metodos.cardapio.sobremesa import Sobremessa

restaurante_praca= Restaurante('Praça Express','Gourmet')

bebida=Bebida('Suco de Melancia',5.0,'grande')
prato=Prato('Paozinho',2.0,'A melhor da cidade')
sobremessa=Sobremessa('Bolo de Chocolate',5.0,'doce','grande','Muito saboroso')
bebida.aplicar_desconto()
prato.aplicar_desconto()
sobremessa.aplicar_desconto()
restaurante_praca.adicionar_no_cardapio(bebida)
restaurante_praca.adicionar_no_cardapio(prato)
restaurante_praca.adicionar_no_cardapio(sobremessa)


def main():
#Restaurante.listar_restaurantes()
 restaurante_praca.exibir_cardapio

if __name__ =='__main__':
    main()
1 resposta

Olá, Andressa! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da herança para criar a classe Sobremessa a partir de Item_Cardapio, utilizou muito bem o decorador @property para organizar a exibição do cardápio e ainda compreendeu a importância de aplicar métodos de desconto para manipular os preços dinamicamente.

Uma dica interessante para o futuro é ajustar a lógica de exibição do cardápio, já que o uso de hasattr pode gerar confusão entre os tipos de itens. Uma forma mais clara seria verificar diretamente a classe com isinstance. Assim:

def exibir_cardapio(self):
    print(f'Cardápio do Restaurante: {self._nome}\n')
    for i, item in enumerate(self.cardapio, start=1):
        if isinstance(item, Prato):
            print(f'\n{i}. Nome do Prato: {item._nome} | Preço: {item._preco} | Descrição: {item.descricao}')
        elif isinstance(item, Bebida):
            print(f'\n{i}. Nome da Bebida: {item._nome} | Preço: {item._preco} | Tamanho: {item.tamanho}')
        elif isinstance(item, Sobremessa):
            print(f'\n{i}. Nome da Sobremesa: {item._nome} | Preço: {item._preco} | Tipo: {item.tipo} | Tamanho: {item.tamanho} | Descrição: {item.descricao}')

Isso deixa o código mais legível e evita que atributos sejam confundidos entre classes diferentes.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!