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!

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