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

Duvida na @property enviar_cardapio

no resultado, sempre printa para ambos (prato e bebida) Tamanho e nao Descricao e Tamanho

  @property
  def exibir_cardapio(self):
      print(f'Cardapio do restaurante {self._nome}')
      for i, item in enumerate(self._cardapio, start=1):
          if hasattr(item, 'tamanho'):
              msg_bebida = f'{i}. Nome: {item._nome} | Preço: {
                  item._preco} | Tamanho: {item.tamanho}'
              print(msg_bebida)
          else:
              msg_prato = f'{i}. Nome: {item._nome} | Preço: {
                  item._preco} | Descricao: {item.descricao}'
              print(msg_prato)
  
  
  class Bebida(ItemCardapio):
  def __init__(self, nome, preco, tamanho):
      super().__init__(nome, preco)
      self.tamanho = tamanho

  def __str__(self):
      return self._nome
      


class Prato(ItemCardapio):
  def __init__(self, nome, preco, descricao):
      super().__init__(nome, preco)
      self.descricao = descricao

  def __str__(self):
      return self._nome ```
      
resultado: 	
// 1. Nome: suco | Preço: 2.0 | Tamanho: grande
// 2. Nome: pao | Preço: 5.0 | Tamanho: melhor
2 respostas

so de curiosidade, usei um Vars na funcao:

@property
    def exibir_cardapio(self):
        print(f'Cardapio do restaurante {self._nome}\n')
        for i, item in enumerate(self._cardapio, start=1):
            print(vars(item))

// olha o resultado! as classes estao certas, suco com atributo tamanho e prato com atributo descricao. Mas os dois saem como tamanho. como pode ser? {'_nome': 'suco', '_preco': 2.0, 'tamanho': 'grande'} {'_nome': 'pao', '_preco': 5.0, 'tamanho': 'melhor'}

solução!

RESOLVIDO!! no App.py estanciei duas vezes Bebida. Erro meu mesmo!!