Módulo 10 - Orientação a objetos: classes

Criando uma classe

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Escrever uma classe usando a palavra reservada class.
  • Entender que a classe é o molde e não faz nada sozinha.
  • Criar objetos chamando o nome da classe, como Conta().
  • Reconhecer que cada objeto criado é independente dos demais.

A palavra class

Criar uma classe em Python começa com a palavra reservada class, o nome da classe e dois-pontos, seguidos de um bloco indentado, igual a uma função ou a um if. Por convenção da comunidade, o nome de uma classe usa CamelCase: cada palavra começa com maiúscula e não há espaços nem sublinhados, como em Conta, ContaBancaria ou Aluno. Isso ajuda a bater o olho e saber que aquilo é uma classe, e não uma variável comum.

class Conta:
    pass

print(Conta)  # <class '__main__.Conta'>

A classe mais simples possível: só o molde, ainda sem conteúdo, usando pass.

A classe acima está vazia. Como o Python exige um corpo depois dos dois-pontos, usamos pass, uma instrução que não faz nada e serve só para preencher o espaço. Repare que definir a classe não cria nenhuma conta, do mesmo jeito que ter a forma de bolo não assa nenhum bolo. A classe é o molde; ela fica ali, pronta, esperando você pedir objetos. Ao imprimir Conta, o Python mostra que aquilo é uma classe, não um objeto ainda.

Criando o objeto com Nome()

Para transformar o molde em coisa de verdade, você instancia a classe: escreve o nome dela seguido de parênteses, como se fosse uma chamada de função. Cada chamada assa um bolo novo. O resultado é um objeto, que você costuma guardar em uma variável para usar depois. Chamar Conta() duas vezes cria dois objetos diferentes, cada um com o seu próprio lugar na memória, mesmo que ainda não tenham nenhum dado dentro.

class Conta:
    pass

conta_ana = Conta()
conta_bruno = Conta()

print(conta_ana)              # <__main__.Conta object at 0x000001...>
print(conta_bruno)            # <__main__.Conta object at 0x000002...>
print(conta_ana is conta_bruno)  # False

Duas instâncias da mesma classe. São objetos distintos, com endereços diferentes.

Ao imprimir cada objeto, o Python mostra que ele é um objeto da classe Conta e um endereço de memória, que muda de execução para execução. O que importa é o teste conta_ana is conta_bruno, que devolve False: são dois objetos independentes. Um bolo não é o outro, ainda que tenham saído da mesma forma. Nas próximas aulas você vai dar recheio a cada um, guardando dados como titular e saldo dentro de cada objeto.

Cada objeto é independente

A independência entre os objetos é o que torna a orientação a objetos útil. Você escreve a classe uma única vez e produz quantos objetos quiser, cada um com vida própria. Em um sistema de banco, isso significa uma classe ContaBancaria e centenas de contas criadas dela, sem copiar e colar código. Adicionar uma conta nova é só chamar Conta() de novo. Toda a estrutura vem de graça, porque está garantida pelo molde.

class Produto:
    pass

# Criando vários objetos em uma lista
produtos = [Produto() for _ in range(3)]
print(len(produtos))          # 3
print(type(produtos[0]))      # <class '__main__.Produto'>
print(isinstance(produtos[0], Produto))  # True

Três objetos Produto criados de uma vez. type e isinstance confirmam a classe.

No exemplo, uma compreensão de lista cria três produtos de uma vez. A função type mostra a classe de um objeto, e isinstance confirma se um objeto pertence a uma classe, respondendo True. Essas duas funções aparecem muito na prática, quando você precisa saber com que tipo de objeto está lidando. Por ora, o essencial é a mecânica: class para definir o molde, Nome() para criar objetos, e cada objeto seguindo o seu caminho. Na próxima aula, os objetos deixam de nascer vazios e passam a receber dados no momento da criação.

Teste rápido

Qual linha cria um novo objeto a partir da classe Conta?

Perguntas frequentes

Por que o nome da classe começa com letra maiúscula?
É a convenção CamelCase, recomendada pela comunidade Python no guia de estilo. Classes com inicial maiúscula (Conta, ContaBancaria) ficam fáceis de distinguir de variáveis e funções, que usam minúsculas. O Python não obriga, mas seguir a convenção deixa o código legível para todos.
Para que serve o pass dentro da classe?
O pass é um recheio que não faz nada. O Python exige um corpo depois dos dois-pontos da classe, então, enquanto você ainda não tem métodos nem atributos, o pass ocupa esse espaço sem dar erro. Assim que a classe ganha conteúdo, o pass sai.
Qual a diferença entre Conta e Conta()?
Conta, sem parênteses, é a própria classe, o molde. Conta(), com parênteses, executa a criação e devolve um objeto novo, uma instância da classe. É como a diferença entre a forma de bolo e o bolo que sai dela.
Quantos objetos posso criar de uma mesma classe?
Quantos você precisar, sem limite prático além da memória do computador. Escreve-se a classe uma vez e chama-se Nome() cada vez que uma coisa nova aparece. Cada objeto é independente e guarda os seus próprios dados.
O endereço estranho que aparece ao imprimir o objeto é problema?
Não. É a exibição padrão do Python para um objeto sem uma forma amigável de ser mostrado: o nome da classe e um endereço de memória. Na aula sobre __str__ você aprende a substituir esse texto por algo legível, como Conta de Ana, saldo R$ 500.
O que faz a função isinstance?
isinstance(objeto, Classe) responde True se aquele objeto foi criado a partir daquela classe, e False caso contrário. É útil para checar o tipo de um objeto antes de usá-lo. A função type mostra a classe diretamente, enquanto isinstance faz a verificação.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.