Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Introdução à Programação Orientada a Objetos em Python

Programação Orientada a Objetos (POO) é um paradigma de programação que permite representar conceitos do mundo real em termos de objetos — coisas que têm características específicas (dados) e comportamentos (ações).

Pense em um objeto como uma coisa autocontida no seu programa que agrupa dados e ações em um só lugar — como um smartphone que você possui: ele tem dados (marca, modelo, nível da bateria) e pode realizar ações (tirar uma foto, fazer uma ligação, tocar música). No código, esses dados ficam em atributos (por exemplo, battery_level), e as ações são métodos (por exemplo, take_photo()); juntos formam uma unidade coerente que você pode criar, configurar e usar.

A classe é o modelo (o projeto do celular), e o objeto é uma instância real e individual construída a partir desse modelo (seu celular específico com sua bateria e fotos atuais). Cada objeto mantém seu próprio estado, então dois objetos da mesma classe podem ter valores diferentes ao mesmo tempo, e eles interagem chamando os métodos uns dos outros em vez de acessar diretamente os detalhes internos — essa ideia é chamada encapsulamento, e ajuda a organizar o código, reduzir bugs e entender o comportamento.

Quando você cria um objeto, o Python normalmente executa init para definir seu estado inicial; depois, você pede para o objeto fazer coisas chamando seus métodos, que podem ler ou atualizar seus atributos conforme necessário. Se você já fez um jogo, imagine um Player com saúde e posição que pode move() e jump(); em um aplicativo web, um User com nome e password_hash que pode authenticate() e update_profile().

Isso é tudo que um objeto é: dados + comportamento, vivendo juntos, criados a partir de uma classe e prontos para trabalhar para você.

Em Python, tudo é um objeto. Isso significa que o código é escrito em torno de objetos e suas interações, fazendo da POO parte central do Python e um recurso importante em bibliotecas e frameworks populares como Django, Flask e até muitos game engines.

Nesta lição, exploraremos os conceitos básicos da POO em Python e aprenderemos a usá-los para criar nossos próprios objetos.


Classes e Objetos

A POO em Python é construída em torno de classes e objetos:

  • Uma classe é um modelo ou definição para um tipo de objeto. Ela descreve quais propriedades (chamadas atributos) e quais comportamentos (chamados métodos) aquele tipo de objeto terá.
  • Um objeto é uma instância de uma classe — é como uma versão real do modelo, com dados reais armazenados em seus atributos.

1.1. Criando uma Classe

Para criar uma classe em Python, use a palavra-chave class, seguida pelo nome da classe e dois pontos.

Exemplo:

class Person:
    pass

Aqui criamos uma classe chamada Person. A instrução pass é um marcador — diz ao Python "não faça nada aqui" até adicionarmos código real mais tarde.

DICA: Por convenção, nomes de classe usam PascalCase (cada palavra começa com letra maiúscula).

Atributos e Métodos

Uma classe pode ter:

  • Atributos — variáveis que guardam informações sobre o objeto.
  • Métodos — funções que definem ações que o objeto pode executar.

2.1. Adicionando Atributos

Para definir atributos ao criar um objeto, declaramos eles dentro de um método especial chamado __init__ (pronuncia-se "dunder init" — abreviação de double underscore init).

O __init__ é executado automaticamente toda vez que você cria um novo objeto a partir da classe. Ele serve para inicializar os atributos do objeto com valores iniciais.

Exemplo:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

O que acontece aqui:

  • O primeiro parâmetro, self, é uma referência ao objeto específico sendo criado.
  • Os outros parâmetros (name, age) são valores passados ao criar o objeto.
  • self.name e self.age são atributos da instância que armazenam os dados dentro do objeto.

IMPORTANTE!: self deve ser sempre o primeiro parâmetro dos métodos de instância — ele permite acessar os próprios atributos e métodos do objeto.

2.2. Adicionando Métodos

Métodos são funções que pertencem a uma classe. Geralmente, executam ações que usam ou alteram os atributos do objeto.

Exemplo:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Olá, meu nome é {self.name} e tenho {self.age} anos.")

Aqui:

  • Adicionamos um método chamado greet.
  • Ele usa os próprios atributos do objeto (self.name e self.age) para mostrar uma mensagem personalizada.

Criando e Usando Objetos

Depois de definir uma classe, você pode criar objetos dela como se chamasse uma função — mas usando o nome da classe.

Exemplo:

person1 = Person("Alice", 30)
person1.greet()

Saída:

Olá, meu nome é Alice e tenho 30 anos.

Conclusão

Nesta lição, você aprendeu:

  • A diferença entre classes e objetos.
  • Como usar __init__ para configurar atributos ao criar objetos.
  • Como definir métodos que permitem que objetos executem ações.

Esta é a base da POO em Python. Na próxima, vamos aprofundar explorando herança — uma forma de criar novas classes que estendem as já existentes.