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

[Sugestão] Para não repetir codigos no projeto da aula

Gostaria que mensagens de interações fossem impressas, todavia em alguns casos elas não seriam necessárias. Para saques e depositos, as mensagens seriam impressas, todavia ao realizar transferencia, gostaria que estas mensagens não fossem impressas, de forma que não estou utilizando os mesmos metodos e eles acabam por se repetir. Existe alguma outra solução mais adequada?? Desde já agradeço.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Laura, tudo bem com você?

Existem diversas maneiras de alcançar este objetivo e uma delas é utilizar um argumento padrão. Um argumento padrão em Python é um valor atribuído a um argumento de função usado como um valor padrão, caso nenhum valor seja fornecido pelo usuário ao chamar a função. Exemplo:

def saudacao(nome="amigo"):
    print("Olá, " + nome + "!")

saudacao("João") # Olá, João!
saudacao()      # Olá, amigo!

No exemplo acima, o argumento nome possui um valor padrão "amigo". Se nenhum valor for passado para nome ao chamar a função saudacao(), o valor padrão será usado.

De posse disso, podemos utilizar um argumento padrão denominado imprime que recebe o valor booleano True ou False a depender do momento em que o método é invocado, caso seja dentro do método transfere o parâmetro imprime será False, veja como fica em código:

def deposita(self, valor, imprime=True):
    self.__saldo += valor
    if imprime:
        print(f'Depósito de R$ {valor}')


def saca(self, valor, imprime = True):
    if(self.__pode_sacar(valor)):
        self.__saldo -= valor
        if imprime:
            print(f'Saque no valor de R$ {valor}')
    else:
        print("O valor {} passou o limite".format(valor))


def transfere(self, valor, destino):
        self.saca(valor, False)
        destino.deposita(valor, False)
        print('Transferência realizada')

Dessa forma, ao chamar o método Trasnfere não será apresentado as mensagens de sacar e depositar. Mas, se esses métodos forem chamados diretamente, seja por meio de objeto.sacar ou objeto.deposita, teremos as mensagens sendo impressas.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito Obrigada!