Olá pessoal da Alura, vi esse tópico aqui: https://cursos.alura.com.br/forum/topico-bug-no-metodo-transfere-do-projeto-de-introducao-a-orientacao-a-objetos-com-python-3-184524, onde os meninos estavam discutindo sobre qual seria uma boa forma de implementar uma verificação na conta, para que seja possível só sacar ou transferir valores que estejam dentro do limite da conta, fiz minha própria implementação e ficou assim o código:
class Conta:
def __init__(self, numero, titular, saldo, limite):
self.__numero = numero
self.__titular = titular
self.__saldo = saldo
self.__limite = limite
def extrato(self):
print("O saldo de {} é de {}".format(self.__titular, self.__saldo))
def deposita(self, valor):
self.__saldo += valor
def pode_sacar(self, valor): # Criei esse método que avalia se é possível sacar o valor determinado ou não, a função retorna um bool, que é True caso
# seja possível sacar o valor e False caso contrário.
return valor <= (self.__saldo + self.__limite)
def saca(self, valor): # Agora saca() tem um if que imprime uma mensagem caso não seja possível sacar o valor.
if self.pode_sacar(valor):
self.__saldo -= valor
else:
print("Saldo Insuficiente!")
def transfere(self, valor, conta_destino): # Aqui também coloquei um if, que é semelhante ao saca(), mas imprime uma mensagem própria para
# transferência.
if self.pode_sacar(valor):
self.saca(valor)
conta_destino.deposita(valor)
print("Tranferência de {} realizada com êxito!".format(valor))
else:
print("Transferência não efetuada: Saldo Insuficiente!")
Quero saber se vocês tem algum jeito melhor de fazer essa verificação ou outra funcionalidade que seria legal colocar no código, terminei a parte 04 agora do curso, então não sei o que tem mais a frente, mas por enquanto é o que eu tenho! :D