Olá pessoas!
Na implementação do método exibir_cardapio
da classe Restaurante
, temos uma série de ifs pra testar a presença de atributos específicos para compor a string.
Não seria melhor definir o método __str__
dentro de cada classe-filha de ItemCardapio
para que o próprio objeto tome conta das informações que devem ser exibidas? Ou isso criaria outros problemas?
Por exemplo, na classe Prato
poderíamos ter
def __str__(self):
return f'Nome: {self._nome} | Preço: R$ {self._preco} | Descrição: {self.descricao}'
e na classe Bebida
def __str__(self):
return f'Nome: {self._nome} | Preço: R$ {self._preco} | Tamanho: {self.tamanho}'
Dessa forma, o método exibir_cardapio
em Restaurante
poderia ser simplificado para
def exibir_cardapio(self):
print(f'Cardapio do restaurante {self._nome}\n')
for i, item in enumerate(self._cardapio, start=1):
mensagem_prato = f'{i}. {item}'
e continuaria produzindo o resultado desejado.
Abraço!