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

Como imprimir o valor conta1?

Olá, como eu posso imprimir valor conta1 digitado como parâmetro para a classe Conta, similarmente ao parâmetro valor_transferencia?

Dados para o teste:

from conta import Conta

conta1 = Conta(123,"Joao",50,100)
conta2 = Conta(456,"Maria",10,100)

conta1.transferir_dinheiro(10, conta2)

Código completo:

class Conta:
    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto...{}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def imprimir_extrato (self):
        print("Olá {}, seu saldo é de {}". format(self.__titular, self.__saldo))

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

    def sacar_dinheiro (self, valor):
        self.__saldo -= valor

    def transferir_dinheiro (self, valor_transferencia, conta_destino):
        self.sacar_dinheiro(valor_transferencia)
        conta_destino.depositar_dinheiro(valor_transferencia)

        titular_destino = conta_destino.__titular
        numero_conta_destino = conta_destino.__numero

        titular_origem = self.__titular
        conta_origem = self
        seu_saldo = self.__saldo
        numero_conta_origem = self.__numero

        print("*** -------------------------------------------------")
        print("*** COMPROVANTE DE TRANSFERENCIA BANCARIA - TED")
        print("*** -------------------------------------------------")
        print("*** Transferência realizada com sucesso")
        print("*** ")
        print("*** --- DADOS CONTA DESTINO ---")
        print("*** Titular: {}".format(titular_destino))
        print("*** Conta: {}".format(conta_destino))
        print("*** Número da conta: {}.".format(numero_conta_destino))
        print("*** Valor: ${}.".format(valor_transferencia))
        print("***")
        print("*** --- DADOS CONTA ORIGEM ---")
        print("*** Titular: {}".format(titular_origem))
        print("*** Conta: {}".format(conta_origem))
        print("*** Número da conta: {}.".format(numero_conta_origem))
        print("*** Saldo em conta: ${}.".format(seu_saldo))

Resultado:

*** -------------------------------------------------
*** COMPROVANTE DE TRANSFERENCIA BANCARIA - TED
*** -------------------------------------------------
*** Transferência realizada com sucesso
*** 
*** --- DADOS CONTA DESTINO ---
*** Titular: Maria
*** Conta: <__main__.Conta object at 0x7fb498440c50>
*** Número da conta: 456.
*** Valor: $10.
***
*** --- DADOS CONTA ORIGEM ---
*** Titular: Joao
*** Conta: <__main__.Conta object at 0x7fb49846d7d0>
*** Número da conta: 123.
*** Saldo em conta: $40.

Veja o resultado que retornou para Conta:

  • *** Conta: <main.Conta object at 0x7fb498440c50>

Eu gostaria de imprimir o valor conta1 e conta2, é possível?

2 respostas
solução!

Oi Thiago, tudo bem?

Quando você faz:

conta1 = Conta(123,"Joao",50,100)

conta1 é apenas o nome da variável que irá manipular a classe e está temporariamente vinculada a sua instância e esses objetos não tem nomes, apenas um endereço na memória.

O que você pode fazer é passar um nome para esta classe quando a instanciar. Algo como:

conta1 = Conta("Nome da Conta 1", 123,"Joao",50,100)

Para isso funcionar, terá que modificar o seu init para ter como parâmetro um nome e além disso, quando for printar as informações, fazer algo como:

print("*** Conta: {}".format(conta_destino.__nome))

Qualquer dúvida é só falar. Abraços e bons estudos!

Obrigado! Agora entendi.