8.5 Métodos
Como vimos, além dos atributos, nossa conta deve possuir funcionalidades. No arquivo teste_conta.py criamos as funções saca() , deposita() e extrato() . No paradigma orientado a objetos, as funcionalidades de um objeto são chamados de métodos - do ponto de vista do código, são as funções dentro de uma classe.
Vamos criar o método deposita() na classe Conta . Aqui, assim como o método init () , o método deposita() deve receber a instância do objeto (self) além do valor a ser depositado:
class Conta:método init () omitido def deposita(self, valor):
self.saldo += valor
Isso acontece porque o método precisa saber qual objeto conta ele deve manipular, qual conta vai depositar um determinado valor - e podemos ter muitas contas criadas no nosso sistema.
Utilizamos o operador ’.’ (ponto) através do objeto conta para chamar o método deposita :
conta.deposita(20.0)
Ao ler esse código, o interpretador associa o objeto conta ao argumento self do método - note que não precisamos passar a conta como argumento, isso é feito por debaixo dos panos pelo Python.
Faremos o mesmo para os métodos saca() e extrato() :
class Conta:outros métodos omitidos def saca(self, valor):
self.saldo -= valor
def extrato(self):print(f'numero: {} \nsaldo: {} {self.numero, self.saldo}')Agora vamos testar nossos métodos:
conta = Conta(‘123-4’, ‘João’, 120.0, 1000.0) conta.deposita(20.0)
conta.extrato() numero: ‘123-4’
saldo: 140.0 conta.saca(15) conta.extrato() numero: ‘123-4’
saldo: 125.0
O saldo inicial era de 120 reais. Depositamos 20 reais, sacamos 15 reais e tiramos o extrato que resultou em 125 reais.
96 8.5 MÉTODOS
Por fim, o código de nossaConta vai ficar assim:
class Conta:def __init__(self, numero, titular, saldo, limite): self.numero = numero
self.titular = titular self.saldo = saldo self.limite = limite
def deposita(self, valor): self.saldo += valordef saca(self, valor): self.saldo -= valordef extrato(self):print(f'numero: {} \nsaldo: {} {self.numero, self.saldo}')