Skip to main content

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?

  1. Organização e clareza Define uma estrutura clara: todas as subclasses devem seguir o mesmo modelo.

  2. Reuso e manutenção Você pode criar várias implementações diferentes da mesma interface.

  3. 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 é