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:

  1. Características: informações que descrevem o objeto
  2. 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.