Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Achei alguns erros cruciais no codigo

class Conta:
    def __init__(self, numero, saldo, limite):
        self.__numero = numero
        self.__saldo = saldo
        self.__limite = limite
        self.__tarifaTransferencia = 8.0

    #NOVO MÉTODO AQUI
    def temSaldoDisponivelPara(self, valor): # underscors para separação do metodo, para ficar mais facil a leitura.
        return valor < (self.__saldo + self.__limite) # O valor para que ele possa sacar ou transferir tem que ser <= ao "valor", se não ele tentaria retirar ate seu limite e não conseguiria, por exemplo se ele tivesse um limite de 50$ conseguiria tirar apenas 49$.#


    def saca(self, valor):

        if self.temSaldoDisponivelPara(valor):
            self.__saldo -= valor
            print("Saque efetuado.")
        else:
            print("Saldo insuficiente.")


    def transfere(self, valor, destino):


        valorTotal = valor + self.__tarifaTransferencia

        if self.temSaldoDisponivelPara(valorTotal):

            self.__saldo -= valorTotal
            destino.deposita(valor) # Aqui ele poderia colocar destino.deposita(valorTotal), pois já pegaria a soma do valor com a taxa.

            print("Transferência efetuada.")
        else:
            print("Saldo insuficiente.")
2 respostas
solução!

Olá Guilherme, tudo certo?

Adorei seus comentários, parabéns pela observação =)

No último comentário, acredito que ele apenas deposita o valor, já que a taxa fica com o banco para que ele faça a transação

Além disso, seria interessante "esconder" a função temSaldoDisponivelPara entre underlines, já que seu uso é apenas interno e ela não precisa ser mostrada na interface pública da classe

class Conta:

    def __init__(self, numero, saldo, limite):
        self.__numero = numero
        self.__saldo = saldo
        self.__limite = limite
        self.__tarifaTransferencia = 8.0

    def __tem_Saldo_Disponivel_Para__(self, valor): 
        return valor <= (self.__saldo + self.__limite)


    def saca(self, valor):

        if self.__tem_Saldo_Disponivel_Para__(valor):
            self.__saldo -= valor
            print("Saque efetuado.")
        else:
            print("Saldo insuficiente.")


    def transfere(self, valor, destino):

        valorTotal = valor + self.__tarifaTransferencia

        if self.__tem_Saldo_Disponivel_Para__(valorTotal):

            self.__saldo -= valorTotal
            destino.deposita(valor) # Aqui ele poderia colocar destino.deposita(valorTotal), pois já pegaria a soma do valor com a taxa.

            print("Transferência efetuada.")
        else:
            print("Saldo insuficiente.")

O código ficou assim, o que acha?

Bons estudos e até logo

Muito obrigado pelo feedback, acho que estou começando a pegar o jeito kkk. vlw demais