Se você domina o básico de Python e quer começar a entrar no mundo intermediário/avançado, entender Classes e POO (Programação Orientada a Objetos) vai mudar completamente a forma como você pensa e escreve código.

Hoje vamos começar do zero:

  • O que é um objeto
  • O que é uma classe
  • Como Python cria objetos automaticamente
  • Diferença entre funções e métodos
  • Exemplos práticos e claros

Vamos lá! 

O que exatamente é um Objeto em Python?

A resposta simples:
No Python, tudo é um objeto.

Quando você cria algo assim:

x = 5
y = "hello"

Você pode pensar que “x é apenas um número” e “y é apenas uma string”.
Mas, na verdade:

  • x é um objeto do tipo int

  • y é um objeto do tipo str

Vamos ver isso com type():

print(type(x))   # <class 'int'>
print(type(y))   # <class 'str'>

Isso significa:

  • O valor 5 não é só “um número”: é uma instância da classe int

  • O valor "hello" é uma instância da classe str

Ou seja:

Classe → modelo/construção
Objeto → algo criado a partir dessa classe

Classes têm funcionalidades escondidas (métodos)

Você usa coisas como:

y.upper()
y.replace("h", "H")

…e talvez nunca tenha se perguntado:

“De onde vem esse .upper()?”
“Por que posso usar .replace() em uma string, mas não em um número?”

Porque esses métodos são criados dentro da classe str.

Se você tentar aplicar em um número:

x.upper()

Erro: AttributeError
Por quê?
Porque a classe int não tem esse método.

Simples assim.

Como ver todas as funções internas de uma classe? (super útil!)

Use a função help():

help(int)

Isso mostra TODOS os métodos do tipo inteiro.
Por exemplo:

  • __add__ → soma

  • __sub__ → subtração

  • __str__ → converter para texto

  • etc.

Da mesma forma:

help(str)

Isso mostra todas as funções que você pode aplicar em strings.

Isso é excelente quando você não lembra como algo funciona.

Funções vs Métodos — Qual a diferença?

Função

Criada com def, recebe valores como argumentos.

def soma(x):
    return x + 1

print(soma(5))  # 6

Método

Chamado a partir de um objeto, usando a sintaxe:

objeto.metodo()

Exemplo:

texto = "python"
print(texto.upper())  

— Aqui upper() é um método
— Ele existe dentro da classe str

Método → ligado a um tipo
Função → independente

Um exemplo clássico: Turtle

Se você já programou com turtle, provavelmente já escreveu:

import turtle

tim = turtle.Turtle()

Aqui:

  • Turtle é uma classe

  • tim é um objeto (uma instância da classe Turtle)

Python faz isso o tempo todo, mesmo quando você não percebe.

Objetos também podem receber métodos com argumentos

Exemplo:

y = "string"
novo = y.replace("s", "")
print(novo)  # tring

Aqui:

  • "s" → 1º argumento

  • "" → 2º argumento

Mas o método está sendo chamado a partir do objeto string.

Resumo até agora

  • Tudo em Python é um objeto
  • Todo objeto vem de uma classe
  • Métodos são funções “presas” a objetos
  • Você usa métodos todos os dias sem perceber
  • Classes internas de Python têm código oculto que você pode explorar com help()
  • Entender isso é essencial antes de criar suas próprias classes

Exercícios práticos (faça agora!)

🟦 Exercício 1

Use help() para descobrir métodos do tipo list.

help(list)

Agora tente usar 3 métodos que você encontrou.

🟩 Exercício 2

Explique (para você mesmo ou em voz alta) por que:

(5).upper()

dá erro.

🟨 Exercício 3

Crie uma função e um método e compare:

def dobrar(x):
    return x * 2

num = 10
print(dobrar(num))

Agora tente:

num.append(5) # Deve dar erro

Por quê?