1
resposta

[Bug] 09 Mãos na massa: Verificando o saque e métodos estáticos

Encontrei um bug no método transfere. Quando o valor demandado excede a soma do saldo com o limite, o saque na conta de origem não é realizado e a mensagem de erro é exibida corretamente, mas o depósito na conta de destino continua sendo executado. Fiz a seguinte correção nos trechos envolvidos:


    def deposita(self, valor):
        self.__saldo += valor

    def saca(self, valor):
       if self.__pode_sacar(valor):
           self.__saldo -= valor
       else:
           print("O valor {} passou o limite".format(valor))


    def transfere(self, valor, destino):
        if self.__pode_sacar(valor): #Parece redundante, mas, sem esta verificação, o depósito na conta destino continua sendo feito, mesmo sem o saque
            self.saca(valor)
            destino.deposita(valor)

    def __pode_sacar(self, valor):
        return valor <= self.__saldo + self.__limite
1 resposta

Olá João, tudo bem com você?

Meus parabéns pela implementação do código, o uso do método __pode_sacar para realizar a validação da transferência foi uma excelente ideia, assim não foi necessário criar uma nova validação para o valor da transferência criando códigos duplicados, bastando usar a validação criada pelo método __pode_sacar.

Fico feliz que tenha compartilhado sua implementação com a comunidade do fórum Alura.

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software