Abstract em Python | ABC, @abstractmethod | Python
- Abstract em Python | ABC,
@abstractmethod| Python
🧠 Conceito geral de abstração
A abstração serve para:
- Definir uma interface comum para várias classes;
- Ocultar detalhes complexos de implementação;
- Obrigar subclasses a implementar certos métodos.
💬 Em outras palavras:
Você cria uma classe abstrata que descreve o que deve ser feito, e as subclasses concretas definem como isso será feito.
🏗️ Como fazer abstração em Python
Python implementa abstração através do módulo abc (Abstract Base Classes).
Importando:
from abc import ABC, abstractmethod
ABC→ transforma a classe em abstrata.@abstractmethod→ marca métodos que devem ser implementados nas subclasses.
📘 Exemplo prático: classe abstrata Forma
from abc import ABC, abstractmethod
class Forma(ABC): # classe abstrata
@abstractmethod
def area(self):
pass # subclasses devem implementar
@abstractmethod
def perimetro(self):
pass
Criando subclasses concretas:
import math
class Circulo(Forma):
def __init__(self, raio):
self.raio = raio
def area(self):
return math.pi * self.raio**2
def perimetro(self):
return 2 * math.pi * self.raio
Agora:
c = Circulo(5)
print(c.area()) # 78.5398...
print(c.perimetro()) # 31.4159...
⚠️ Se tentar instanciar Forma() diretamente:
f = Forma() # ❌ ERRO: TypeError: Can't instantiate abstract class
💡 Por que usar abstração?
-
Organização e clareza Define uma estrutura clara: todas as subclasses devem seguir o mesmo modelo.
-
Reuso e manutenção Você pode criar várias implementações diferentes da mesma interface.
-
Polimorfismo natural Permite tratar diferentes objetos da mesma forma:
formas = [Circulo(3), Circulo(7)]
for f in formas:
print(f.area()) # funciona mesmo sem saber qual tipo exato é