O que são objetos
Entenda objetos como coisas do mundo real representadas no código, com características e ações.
Você já aprendeu a guardar informações em variáveis, a tomar decisões com condicionais, a repetir tarefas com loops, a organizar código em funções e a trabalhar com arquivos. Agora vamos dar um passo importante: entender uma forma diferente de pensar e organizar programas — a Programação Orientada a Objetos, ou simplesmente POO.
Mas não se preocupe. Antes de qualquer código novo, vamos entender o conceito central: o que é um objeto?
Objetos no mundo real
Olhe ao seu redor. Você está cercado de objetos: uma cadeira, um celular, uma caneca, um carro. Cada objeto tem duas coisas em comum:
- Características: informações que descrevem o objeto
- Ações: coisas que o objeto pode fazer (ou que você pode fazer com ele)
Veja o exemplo de um cachorro:
| Características | Ações |
|---|---|
| Nome: Rex | Latir |
| Raça: Labrador | Correr |
| Idade: 3 anos | Comer |
| Cor: Amarelo | Dormir |
E um carro:
| Características | Ações |
|---|---|
| Marca: Fiat | Acelerar |
| Modelo: Uno | Frear |
| Cor: Vermelho | Buzinar |
| Velocidade: 60 km/h | Ligar |
Na programação orientada a objetos, a ideia é representar essas coisas do mundo real dentro do código, com suas características e ações. As características são chamadas de atributos e as ações são chamadas de métodos.
Atributo = característica do objeto (um dado) Método = ação que o objeto pode executar (uma função ligada ao objeto)
Você já usa objetos o tempo todo em Python
Aqui está uma revelação interessante: você já trabalha com objetos desde a primeira lição!
Em Python, tudo é um objeto: strings, listas, números, arquivos abertos... todos são objetos com atributos e métodos.
Quando você escreve:
nome = "Ana Silva"
print(nome.upper()) # ANA SILVA
print(nome.lower()) # ana silva
print(nome.split()) # ['Ana', 'Silva']
O upper(), lower() e split() são métodos do objeto nome (que é do tipo str — uma string). Você está pedindo para o objeto executar uma ação!
E quando você escreve:
numeros = [3, 1, 4, 1, 5, 9]
numeros.append(2) # Adiciona 2 ao final da lista
numeros.sort() # Ordena a lista
print(len(numeros)) # 7 — quantidade de itens
O append() e sort() são métodos do objeto numeros (que é do tipo list). Você já usa orientação a objetos, só ainda não conhecia esse nome!
A diferença entre função e método
Você pode estar se perguntando: qual é a diferença entre uma função e um método?
- Função: existe sozinha, você chama pelo nome —
print(),len(),input() - Método: pertence a um objeto, você chama através dele —
nome.upper(),lista.append()
# Função — chama sozinha
frase = "python é incrível"
print(len(frase)) # 18 — função len() chamada com frase como argumento
# Método — pertence ao objeto frase
print(frase.upper()) # PYTHON É INCRÍVEL — método do objeto frase
print(frase.count("i")) # 2 — conta quantas vezes "i" aparece
O ponto (
.) antes do método é a forma de dizer: "vá até esse objeto e execute essa ação". É como dar uma ordem diretamente a um objeto específico.
Objetos podem ter atributos (características)
Além de métodos (ações), objetos também podem ter atributos — dados que descrevem o objeto. Você já viu isso com o módulo datetime:
from datetime import date
hoje = date.today()
print(hoje) # data atual (ex: 2026-07-04)
print(hoje.year) # 2026 ← atributo: o ano da data
print(hoje.month) # 7 ← atributo: o mês da data
print(hoje.day) # 4 ← atributo: o dia da data
O hoje.year, hoje.month e hoje.day são atributos do objeto hoje. Eles não executam nenhuma ação — apenas guardam uma informação sobre aquele objeto.
A diferença visual é simples:
- Atributo: sem parênteses →
objeto.atributo - Método: com parênteses →
objeto.metodo()
from datetime import date
hoje = date.today()
# Atributos — sem parênteses, apenas acessam um valor
print(hoje.year) # 2026
# Métodos — com parênteses, executam uma ação
print(hoje.strftime("%d/%m/%Y")) # 04/07/2026
Por que pensar em objetos?
Imagine que você está criando um sistema para uma clínica veterinária. Sem orientação a objetos, você precisaria de várias variáveis separadas para cada animal:
# Sem objetos — difícil de organizar quando há vários animais
cachorro_nome = "Rex"
cachorro_raca = "Labrador"
cachorro_idade = 3
gato_nome = "Mimi"
gato_raca = "Persa"
gato_idade = 5
Já imaginou com 50 animais? Vira um caos.
Com orientação a objetos, você pode criar um modelo chamado classe — uma espécie de molde — e usar esse molde para criar vários objetos do mesmo tipo, cada um com suas próprias informações:
# Com objetos — organizado e escalável
class Animal:
def __init__(self, nome, raca, idade):
self.nome = nome
self.raca = raca
self.idade = idade
cachorro = Animal("Rex", "Labrador", 3)
gato = Animal("Mimi", "Persa", 5)
print(cachorro.nome) # Rex
print(gato.raca) # Persa
Não se preocupe com a sintaxe ainda — isso é exatamente o que você vai aprender nas próximas lições. Por enquanto, o importante é entender o conceito: objetos agrupam dados e comportamentos relacionados em um único lugar.
Resumindo o vocabulário da POO
Antes de seguir, vamos fixar os termos que aparecerão nas próximas lições:
| Termo | Significado | Exemplo do mundo real |
|---|---|---|
| Objeto | Uma representação de algo no código, com dados e ações | Um cachorro específico |
| Classe | O molde ou modelo para criar objetos | A "ideia" de cachorro em geral |
| Atributo | Uma característica do objeto (um dado) | Nome, raça, idade |
| Método | Uma ação que o objeto pode executar | Latir, correr, comer |
Uma analogia simples:
- a classe é como uma forma de bolo (o molde).
- os objetos são os bolos prontos.
- cada bolo pode ter sabores diferentes, os atributos.
- as ações que podemos fazer com o bolo (fatiar, decorar, comer) são os métodos.
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- Na Programação Orientada a Objetos, objetos representam coisas do mundo real no código, com características (atributos) e ações (métodos).
- Em Python, tudo já é um objeto: strings, listas, datas — todos têm atributos e métodos.
- Métodos são funções que pertencem a um objeto e são chamados com o ponto:
objeto.metodo(). - Atributos são dados que descrevem o objeto e são acessados sem parênteses:
objeto.atributo. - Uma classe é o molde para criar objetos. O objeto é a instância criada a partir desse molde.
- A orientação a objetos organiza o código, agrupando dados e comportamentos relacionados em um único lugar. Isso torna programas maiores muito mais fáceis de entender e manter.