Aula 3: Atributos - O Estado do Objeto

Definindo as características individuais dos objetos.

O Que Você Vai Aprender

Nesta aula, você entenderá como os objetos mantêm seu "estado" através dos atributos de instância. Aprenderá sobre o método especial `__init__` (o construtor), que é crucial para inicializar esses atributos quando um novo objeto é criado, garantindo que cada objeto comece com suas características definidas.

📊 Atributos de Instância

Compreender as características individuais que cada objeto possui.

🏗️ O Construtor `__init__`

Aprender como o método `__init__` é usado para inicializar atributos ao criar um objeto.

Atributos de Instância: O Estado do Objeto

Os atributos de instância são variáveis que pertencem a um objeto específico (uma instância de uma classe). Eles representam as características ou dados que cada objeto individual possui, e que podem ser diferentes de um objeto para outro, mesmo que sejam da mesma classe.

Exemplo: Diferentes Carros da Mesma Classe

Imagine uma `Classe Carro`. Cada carro que você cria a partir dessa classe (cada objeto) pode ter uma cor, modelo e ano diferentes. `cor`, `modelo` e `ano` seriam atributos de instância.

# Simulação em Python (conceito)
class Carro:
    def __init__(self, cor, modelo, ano):
        self.cor = cor
        self.modelo = modelo
        self.ano = ano

carro1 = Carro("vermelho", "Sedan", 2022)
carro2 = Carro("azul", "Hatch", 2020)

print(f"Carro 1: Cor {carro1.cor}, Modelo {carro1.modelo}")
print(f"Carro 2: Cor {carro2.cor}, Modelo {carro2.modelo}")

Simulador: Criando Carros com Atributos

Defina a cor, modelo e ano para criar um objeto `Carro` e ver seus atributos.

O Construtor (`__init__`): Inicializando Atributos

O método especial `__init__` (lê-se "init") é o construtor em Python. Ele é automaticamente chamado toda vez que um novo objeto de uma classe é criado (instanciado). É o lugar ideal para inicializar os atributos de instância do objeto.

Estrutura do `__init__`

O primeiro parâmetro de qualquer método de instância (incluindo `__init__`) deve ser `self`, que é uma referência ao próprio objeto que está sendo criado. Os parâmetros seguintes são os valores que você deseja passar para inicializar os atributos.

class Pessoa:
    def __init__(self, nome, idade):
        self.nome = nome    # Atributo 'nome'
        self.idade = idade  # Atributo 'idade'

p1 = Pessoa("Ana", 30) # Quando Pessoa() é chamado, __init__ é executado
print(f"Nome da Pessoa: {p1.nome}")    # Acessando o atributo
print(f"Idade da Pessoa: {p1.idade}")   # Acessando o atributo

Simulador: Criando Pessoas com `__init__`

Crie instâncias da classe `Pessoa` (usando o `__init__` simulado) e veja seus atributos sendo inicializados e acessados.

Desafios para Continuar

Agora que você entende atributos e o construtor `__init__`, é hora de praticar! Resolva estes problemas no seu ambiente de desenvolvimento Python para solidificar seu aprendizado.

  • Crie uma Classe `Produto`

    Defina uma classe `Produto` com um construtor `__init__` que inicialize os atributos `nome`, `preco` e `quantidade`.

  • Instancie e Acesse Atributos de `Produto`

    Crie dois objetos diferentes da classe `Produto`:

    • Um para "Notebook Gamer" com preço 5500.00 e quantidade 10.
    • Outro para "Mouse sem fio" com preço 80.00 e quantidade 50.

    Em seguida, imprima o `nome` e o `preco` de cada um desses produtos.