PythonPOOintermediario

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

Mais exercícios de POO

PYPOI2I · IntermediárioHerança simplesPYPOI1I · IntermediárioProperty e setterPYPOO7B · BásicoMétodo estáticoPYPOO0B · BásicoObjetos como atributos
Ver todos os exercícios de Python