Aula 4: Métodos - O Comportamento do Objeto

Definindo as ações que os objetos podem realizar.

O Que Você Vai Aprender

Nesta aula, você explorará os métodos, que são as "ações" ou "comportamentos" que os objetos podem realizar. Entenderá como definir esses métodos dentro de uma classe e a importância fundamental do parâmetro `self`, que permite que os métodos acessem os atributos e outros métodos do próprio objeto.

🚀 Métodos de Instância

Compreender as funções que definem o comportamento dos objetos.

🔍 O Parâmetro `self`

Entender a referência ao próprio objeto dentro de um método.

Métodos de Instância: O Comportamento do Objeto

Enquanto os atributos de instância representam o "estado" ou as "características" de um objeto, os métodos de instância representam o "comportamento" ou as "ações" que um objeto pode realizar. Eles são funções definidas dentro de uma classe.

Definindo e Chamando um Método

Métodos são definidos como funções normais dentro da classe, mas sempre recebem `self` como primeiro parâmetro. Para chamá-los, você usa a notação de ponto (`.`) no objeto.

class Cachorro:
    def __init__(self, nome, raca):
        self.nome = nome
        self.raca = raca

    def latir(self): # Método de instância
        print(f"{self.nome} da raça {self.raca} está latindo: Au! Au!")

# Criando um objeto
meu_cachorro = Cachorro("Buddy", "Golden Retriever")

# Chamando o método
meu_cachorro.latir() # Saída: Buddy da raça Golden Retriever está latindo: Au! Au!

Simulador: Chamando Métodos de Carro

Crie um carro e chame o método `acelerar()` para ver seu comportamento. (Classe `CarroSim` já definida internamente).

O Parâmetro `self`: A Referência ao Próprio Objeto

Em Python, todo método de instância deve ter `self` como seu primeiro parâmetro. `self` é uma convenção (poderia ser qualquer outro nome, mas `self` é universalmente aceito e esperado) que se refere à própria instância do objeto que está chamando o método. É através de `self` que um método pode acessar os atributos e outros métodos daquele objeto específico.

Como `self` Funciona

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

    def apresentar(self): # 'self' permite acessar 'self.nome' e 'self.idade'
        print(f"Olá, meu nome é {self.nome} e eu tenho {self.idade} anos.")

p1 = Pessoa("Ana", 30)
p1.apresentar() # Quando 'apresentar()' é chamado, Python passa 'p1' como 'self'

`self` é crucial porque sem ele, o método não saberia a qual objeto ele pertence para acessar seus atributos únicos.

Simulador: `self` em Ação

Crie um objeto `Animal` e observe como o método usa `self` para imprimir os atributos específicos daquele animal.

Desafios para Continuar

Agora que você entendeu o comportamento dos objetos através de métodos e o papel de `self`, é hora de praticar! Resolva estes problemas no seu ambiente de desenvolvimento Python para solidificar seu aprendizado.

  • Adicione um Método `depositar()` à Classe `ContaBancaria`

    Considere a classe `ContaBancaria` (se você a criou em aulas anteriores, ou crie uma nova com um atributo `saldo`). Adicione um método `depositar(valor)` que aumente o `saldo` do objeto pelo `valor` fornecido e imprima o novo saldo.

  • Crie e Use uma `Classe Livro` com Métodos

    Defina uma classe `Livro` com atributos `titulo` e `autor` (inicializados no `__init__`). Adicione os seguintes métodos:

    • `detalhes()`: Que imprima "Título: [titulo], Autor: [autor]".
    • `esta_disponivel()`: Que retorne `True` (simulando que está sempre disponível por enquanto).

    Crie um objeto `Livro` e chame ambos os métodos.