Os métodos de instância são funções definidas dentro de uma classe que operam numa instância específica dessa classe. Estes métodos recebem automaticamente a instância atual como primeiro argumento, que é convencionalmente chamado de self
. Este capítulo irá explorar como criar e utilizar métodos de instância em Python através de exemplos práticos.
Definição de um Método de Instância
Para definir um método de instância, incluímo-lo dentro da definição da classe e garantimos que ele aceite self
como o primeiro parâmetro. Segue um exemplo simples:
class Veiculo:
def __init__(self, marca, modelo, ano):
self.marca = marca
self.modelo = modelo
self.ano = ano
def descricao(self):
return f"{self.ano} {self.marca} {self.modelo}"
# Criar uma instância de Veiculo
meu_carro = Veiculo("Toyota", "Corolla", 2020)
print(meu_carro.descricao())
Neste exemplo, descricao
é um método de instância que acessa os atributos da instância de Veiculo
referidos por self
.
Métodos que Alteram o Estado da Instância
Os métodos de instância também podem modificar o estado da instância:
class Contador:
def __init__(self):
self.valor = 0
def incrementar(self):
self.valor += 1
def decrementar(self):
self.valor -= 1
def obter_valor(self):
return self.valor
# Criar uma instância de Contador
contador = Contador()
contador.incrementar()
contador.incrementar()
contador.decrementar()
print(contador.obter_valor()) # Deveria imprimir 1
No exemplo acima, os métodos incrementar
e decrementar
modificam o valor de self.valor
, enquanto obter_valor
retorna o valor atual.
Exemplo Real-World: Gestão de Tarefas
Vamos ver um exemplo mais realista, onde criamos uma aplicação simples de gestão de tarefas:
class Tarefa:
def __init__(self, descricao, concluida=False):
self.descricao = descricao
self.concluida = concluida
def marcar_concluida(self):
self.concluida = True
def desmarcar_concluida(self):
self.concluida = False
def mostrar_tarefa(self):
estado = "Concluída" if self.concluida else "Por concluir"
return f"Tarefa: {self.descricao} - Estado: {estado}"
# Criar algumas tarefas
tarefa1 = Tarefa("Estudar para o teste de matemática")
tarefa2 = Tarefa("Ir ao supermercado")
tarefa1.marcar_concluida()
print(tarefa1.mostrar_tarefa()) # Deveria imprimir que a tarefa está concluída
print(tarefa2.mostrar_tarefa()) # Deveria imprimir que a tarefa está por concluir
Neste exemplo, criámos a classe Tarefa
com métodos que alteram e apresentam o estado da tarefa.
Resumo
Neste capítulo, abordámos o conceito de métodos de instância em Python. Aprendemos a:
- Definir métodos de instância com
self
como primeiro parâmetro. - Criar métodos que podem alterar o estado de uma instância.
- Aplicar estes conceitos em exemplos práticos e do mundo real.
Quiz
-
Qual é o propósito do parâmetro
self
num método de instância?- a) Indicar que o método é estático.
- b) Referenciar a classe atual.
- c) Referenciar a instância atual.
- d) Nenhuma das acima.
-
Um método de instância pode:
- a) Modificar atributos da instância.
- b) Ser chamado diretamente através da classe sem criar instâncias.
- c) Ser definido fora da classe.
- d) Utilizar
self
como segundo parâmetro.
-
Dado o seguinte código, qual será a saída esperada?
class Produto: def __init__(self, nome, preco): self.nome = nome self.preco = preco def aplicar_desconto(self, desconto): self.preco *= (1 - desconto / 100) def mostrar_preco(self): return f"O preço do {self.nome} é {self.preco} euros" produto1 = Produto("Computador", 1000) produto1.aplicar_desconto(10) print(produto1.mostrar_preco())
- a) O preço do Computador é 900 euros
- b) O preço do Computador é 1000 euros
- c) O preço do Computador é 1100 euros
- d) Nenhuma das acima