Classe abstrata
Em projetos reais, muitas vezes você precisa garantir que diferentes classes sigam o mesmo contrato, como em um sistema de formas geométricas onde toda forma deve ter um método area(). As classes abstratas em Python, com abc.ABC e @abstractmethod, forçam essa estrutura, evitando que você esqueça de implementar métodos essenciais. Dominar esse padrão é crucial para escrever código extensível e de fácil manutenção, especialmente em equipes.
O PROBLEMA
Forma abstrata com ABC. Triangulo e Retangulo implementam area().
EXEMPLO
Forma() → TypeError
SOBRE O CONCEITO
Uma classe abstrata é uma classe que não pode ser instanciada diretamente — serve como modelo para outras classes. Para criá-la, importamos ABC e abstractmethod de abc. Decoramos com @abstractmethod o método que todas as subclasses devem implementar, como area(). O erro comum é esquecer o decorador @abstractmethod: sem ele, o método se torna comum e você pode instanciar a classe base, perdendo a proteção. Com @abstractmethod, qualquer tentativa de instanciar Forma() gera um TypeError, garantindo que apenas classes que implementam area() sejam usadas.
RESOLUÇÃO