Pular para o conteúdo
desenvolvimento

Explorando Programação Orientada a Objetos com Python

Um guia prático sobre os pilares da POO em Python: classes, herança, polimorfismo e encapsulamento para projetos reais.

Douglas M. Pereira2 min de leitura
pythonpooboas-práticas

Por que POO importa?

Programação Orientada a Objetos não é apenas um paradigma acadêmico — é uma ferramenta prática para organizar código que cresce. Quando seu projeto passa de 500 linhas, a diferença entre código procedural e código bem estruturado com POO fica evidente.

Classes: o bloco fundamental

Em Python, tudo é objeto. Quando você cria uma classe, está definindo um novo tipo de dado com comportamentos específicos:

class Servico:
    def __init__(self, nome: str, preco: float):
        self.nome = nome
        self.preco = preco
        self._ativo = True

    def desativar(self):
        self._ativo = False

    def esta_ativo(self) -> bool:
        return self._ativo

Note o uso de _ativo com underscore — isso indica que o atributo é de uso interno. Python não impõe privacidade, mas respeitar essa convenção é fundamental.

Herança com propósito

Herança resolve um problema real: reutilizar comportamento sem duplicar código.

class ServicoRecorrente(Servico):
    def __init__(self, nome: str, preco: float, frequencia: str):
        super().__init__(nome, preco)
        self.frequencia = frequencia

    def calcular_custo_anual(self) -> float:
        multiplicadores = {"mensal": 12, "trimestral": 4, "anual": 1}
        return self.preco * multiplicadores.get(self.frequencia, 1)

Polimorfismo na prática

O poder do polimorfismo aparece quando diferentes objetos respondem à mesma interface:

def gerar_relatorio(servicos: list[Servico]) -> str:
    linhas = []
    for servico in servicos:
        status = "Ativo" if servico.esta_ativo() else "Inativo"
        linhas.append(f"{servico.nome}: {status}")
    return "\n".join(linhas)

Não importa se o serviço é base ou recorrente — a função funciona para ambos.

Conclusão

POO em Python é pragmática. Use quando faz sentido, não por dogma. Para scripts simples, funções bastam. Para sistemas com múltiplas entidades e regras de negócio complexas, POO organiza e escala.