POO no Python: classes, herança e composição

Atualizado em: 20/08/2026
Tempo de leitura: 4 minutos
logo do python com objetos abaixo do logo

A linguagem Python é conhecida por sua simplicidade e legibilidade. Mas, além disso, ela é muito poderosa quando o assunto é programação orientada a objetos (POO). Neste artigo, você vai entender o que é POO, como ela funciona em Python e como usar seus recursos no dia a dia.


O que é Programacão Orientada a Objetos?

A Programacão Orientada a Objetos é um modelo de programação que organiza o código em objetos. Um objeto é uma combinação de dados (como nome, idade, etc.) e comportamentos (como falar, andar, calcular).

Esse modelo tenta imitar a vida real. Por exemplo, um carro pode ser um objeto com atributos como cor, modelo e marca. Ele também tem comportamentos, como acelerar e frear.


Principais Conceitos da POO em Python

Vamos agora entender os quatro pilares da orientação a objetos. Eles ajudam a manter o código organizado, reutilizável e fácil de manter.

1. Classes e Objetos

  • Classe é um molde para criar objetos.
  • Objeto é uma instância de uma classe.

Exemplo prático:

Python
class Pessoa:
    def __init__(self, nome, idade):
        self.nome = nome
        self.idade = idade

    def apresentar(self):
        print(f"Oi, meu nome é {self.nome} e tenho {self.idade} anos.")

p1 = Pessoa("Ana", 30)
p1.apresentar()

2. Encapsulamento

Encapsulamento é o ato de proteger os dados do objeto, deixando algumas informações privadas.

Exemplo:

Python
class ContaBancaria:
    def __init__(self, saldo):
        self.__saldo = saldo  # atributo privado

    def mostrar_saldo(self):
        print(f"Saldo atual: R${self.__saldo}")

conta = ContaBancaria(1000)
conta.mostrar_saldo()

3. Herança

Herança é quando uma classe filha herda as características de uma classe pai.

Exemplo:

Python
class Animal:
    def emitir_som(self):
        print("Som genérico")

class Cachorro(Animal):
    def emitir_som(self):
        print("Latido")

pet = Cachorro()
pet.emitir_som()

4. Polimorfismo

Polimorfismo é a capacidade de um mesmo método se comportar de maneiras diferentes, dependendo do contexto.

Exemplo:

Python
def fazer_som(animal):
    animal.emitir_som()

fazer_som(Cachorro())

Por que usar POO em Python?

POO traz muitas vantagens:

  • Organiza melhor o código
  • Facilita a reutilização de código
  • Deixa o código mais legível
  • Ajuda no trabalho em equipe

Termos comuns em Python Orientado a Objetos

  • self: palavra usada para acessar atributos e métodos do próprio objeto
  • init: método construtor que é chamado ao criar um objeto
  • Atributo: variável que pertence a um objeto
  • Método: função que pertence a um objeto

Exemplo do Mundo Real: Sistema de Biblioteca

Imagine que você vai criar um sistema simples para uma biblioteca:

Python
class Livro:
    def __init__(self, titulo, autor):
        self.titulo = titulo
        self.autor = autor

    def detalhes(self):
        print(f"{self.titulo}, de {self.autor}")

class Usuario:
    def __init__(self, nome):
        self.nome = nome
        self.livros = []

    def emprestar(self, livro):
        self.livros.append(livro)
        print(f"{self.nome} pegou emprestado: {livro.titulo}")

Boas Práticas em POO

  • Use nomes claros para classes, atributos e métodos
  • Separe responsabilidades em diferentes classes
  • Evite repetir código: use herança ou métodos reutilizáveis
  • Prefira encapsular dados sensíveis
  • Teste seus objetos de forma individual

Diferenças entre POO e programação tradicional

CaracterísticaPOOTradicional (procedural)
Foco principalObjetosFunções
Reutilização de códigoAltaBaixa
Facilidade de manutençãoAltaMédia
Exemplo de estruturaClasse “Pessoa” com métodosFunção “cadastrar_pessoa()”

Quando usar POO em Python?

POO é ideal para:

  • Projetos grandes com muitos módulos
  • Sistemas que simulam elementos do mundo real
  • Aplicativos que evoluem com o tempo
  • Programas que exigem manutenção fácil

Conclusão

A programação orientada a objetos em Python é uma ferramenta poderosa. Ela ajuda você a escrever códigos mais organizados, reutilizáveis e fáceis de entender. Mesmo que você esteja começando agora, vale a pena estudar esses conceitos e praticar com exemplos simples.

Com o tempo, você vai perceber como a POO facilita seu trabalho, especialmente em projetos maiores. Continue aprendendo e explorando!

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Programador analisando código para identificar tipos MIME de arquivos no Python
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    mimetypes.guess_file_type: detecte tipos MIME

    Aprenda mimetypes.guess_file_type no Python para detectar tipos MIME em caminhos, URLs, uploads e respostas HTTP com fallbacks seguros.

    Ler mais

    Tempo de leitura: 6 minutos
    13/09/2026
    Componentes de servidor representando interpretadores Python executando em paralelo
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    InterpreterPoolExecutor: paralelismo real no Python

    Aprenda InterpreterPoolExecutor no Python para executar tarefas CPU-bound em interpretadores isolados com paralelismo real.

    Ler mais

    Tempo de leitura: 6 minutos
    13/09/2026
    Microprocessador representando CPUs disponíveis para um processo Python
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    os.process_cpu_count: conte CPUs disponíveis

    Aprenda os.process_cpu_count no Python para dimensionar workers conforme as CPUs realmente disponíveis ao processo.

    Ler mais

    Tempo de leitura: 4 minutos
    12/09/2026
    Laptop com código digital representando dados BLOB no SQLite
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    sqlite3.Blob: leia BLOBs sem carregar tudo na memória

    Aprenda sqlite3.Blob no Python para ler e gravar BLOBs em partes, reduzir memória e trabalhar com dados binários no SQLite.

    Ler mais

    Tempo de leitura: 5 minutos
    12/09/2026
    Análise estatística para random.binomialvariate no Python
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    random.binomialvariate: simule distribuições binomiais

    Aprenda random.binomialvariate no Python para simular sucessos, validar probabilidades e analisar cenários binomiais com clareza.

    Ler mais

    Tempo de leitura: 6 minutos
    11/09/2026
    Código Python analisado com inspect.signature.bind
    Python Avançado
    Foto de perfil de Leandro Hirt da Academify

    inspect.signature.bind: valide argumentos de funções

    Aprenda inspect.signature.bind no Python para validar argumentos, aplicar padrões e criar decorators e APIs dinâmicas com segurança.

    Ler mais

    Tempo de leitura: 6 minutos
    11/09/2026