1
resposta

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

ITEM CARDAPIO

from abc import ABC, abstractmethod

class ItemCardapio(ABC):
    def __init__(
        self, 
        nome:str, 
        preco:float, 
        disponibilidade:bool = True
    ) -> None:
        self._nome = nome
        self._preco = preco
        self._disponibilidade = disponibilidade

    @abstractmethod
    def aplicar_desconto(self):
        pass

SOBREMESA

from modelos.cardapio.item_cardapio import ItemCardapio


class Sobremesa(ItemCardapio):
    def __init__(
        self, 
        nome: str, 
        preco: float,
        tipo: str,
        tamanho: str,
        descricao: str
    ) -> None:
        super().__init__(nome, preco, disponibilidade=True)
        self._tipo = tipo
        self._tamanho = tamanho
        self._descricao = descricao

    def __str__(self) -> str:
        return self._nome
    
    def aplicar_desconto(self):
        pass
1 resposta

Olá, Zé! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes abstratas para implementar o cardápio com Python, utilizou muito bem o construtor para inicializar atributos específicos e ainda compreendeu a importância do método especial __str__ para representar os objetos de forma clara.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Uma dica interessante para o futuro é implementar a lógica de desconto diretamente na classe Sobremesa. Assim:

def aplicar_desconto(self):
    self._preco *= 0.9

Isso faz com que o preço da sobremesa seja reduzido automaticamente em 10% quando o método for chamado.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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