Olá! Como vai?
Essa abordagem pode realmente levar a um design frágil, pois depende da presença ou ausência de atributos específicos para diferenciar os tipos de itens.
Uma alternativa mais robusta seria utilizar o isinstance()
para verificar explicitamente a classe do objeto. Isso tornaria o código mais claro e menos propenso a erros futuros, especialmente se novas classes forem adicionadas ao projeto. Aqui está um exemplo de como você poderia implementar isso:
@property
def exibir_cardapio(self):
print(f'Cardapio do restaurante {self._nome}\n')
for i, item in enumerate(self._cardapio, start=1):
if isinstance(item, Prato):
mensagem_prato = f'{i}. Nome: {item._nome} | Preço: R${item._preco} | Descrição: {item.descricao}'
print(mensagem_prato)
elif isinstance(item, Bebida):
mensagem_bebida = f'{i}. Nome: {item._nome} | Preço: R${item._preco} | Tamanho: {item.tamanho}'
print(mensagem_bebida)
Neste exemplo, Prato
e Bebida
são classes que você teria definido em seu projeto. Usando isinstance()
, você verifica diretamente o tipo do item, o que é mais seguro e claro.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.