1
resposta

Mão na massa: refatorando uma função

from modelos.cardapio.item_cardapio import ItemCardapio

sobremesa.py

class Sobremesa(ItemCardapio):
    def __init__(self, nome, preco, tipo, tamanho, descricao):
        super().__init__(nome, preco)
        self._tipo = tipo
        self._tamanho = tamanho
        self._descricao = descricao

    def __str__(self):
        return f"{super().__str__()} | Tipo: {self._tipo} | Tamanho: {self._tamanho} | Descricao: {self._descricao}"
    
    def apllicar_desconto(self):
        self._preco -= (self._preco * 0.1)
1 resposta

Oi, Luiz! Como vai?

Agradeço por compartilhar.

Sua implementação da classe Sobremesa ficou bem organizada, com o uso de herança a partir de ItemCardapio e a sobrescrita do método __str__. Um ponto importante é o nome do método apllicar_desconto: se a classe abstrata espera o método aplicar_desconto, com apenas um l, o Python não vai reconhecer essa implementação como válida.

Dica: ajuste o nome do método para ficar igual ao definido na classe base e aplique o desconto dentro dele, assim: def aplicar_desconto(self): self._preco -= self._preco * 0.1. Isso garante que o polimorfismo funcione corretamente quando diferentes itens do cardápio tiverem seus próprios descontos.

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