Sobremesa.py
from modelos.cardapio.item_cardapio import ItemCardapio
class Sobremesa(ItemCardapio):
def __init__(self, nome, preco, tipo, tamanho):
super().__init__(nome, preco)
self.tipo = tipo
self.tamanho = tamanho
def __str__(self):
return self._nome
def aplicar_desconto(self):
self._preco -= (self._preco * 0.1)
Restaurante.py
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'{i}. Nome: {item._nome} | Preço: R$ {item._preco} | Descrição: {item.descricao}'
print(mensagem_prato)
elif hasattr(item, 'tipo'):
mensagem_sobremesa = f'{i}. Nome: {item._nome} | Preço: R$ {item._preco} | Tipo: {item.tipo} | Tamanho: {item.tamanho}'
print(mensagem_sobremesa)
else:
mensagem_bebida = f'{i}. Nome: {item._nome} | Preço: R$ {item._preco} | Tamanho: {item.tamanho}'
print(mensagem_bebida)
Implementei desta forma, mas não sei se é a melhor das convenções. Porém, estou com dúvida no porque não podemos usar atributos privados no descrição, tipo e tamanho? Sempre que eu tentava utilizar, meu código quebrava.
Apenas comentando da minha lógica, pensei em usar o "Elif" para conseguir exibir o tipo e tamanho da sobremesa. Qual seria outra forma de exibir eles?