2
respostas

erro de atributo

boa tarde.

meu código fica apresentando o seguinte erro:

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 extrato(self):
    print("Saldo de {} do titular {}".format(self.__saldo, self.__titular))

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

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

def transfere(self, valor, origem, destino):
    origem.saca(valor)
    destino.deposita(valor)

from conta import Conta conta = Conta(123, "nico", 555, 1000.5) construindo objeto...<conta.Conta object at 0x0572CAD0> conta2 = Conta(1234, "baba", 1000, 5444) construindo objeto...<conta.Conta object at 0x0572CCF0> conta.transfere(20,conta,conta2) Traceback (most recent call last): File "", line 1, in AttributeError: 'Conta' object has no attribute 'transfere'

2 respostas

Oi Bruno,

Acho que o problema no código está ali no transfere, onde você está atribuindo valor, origem e destino. Tenta usar o seguinte código:

  class ContaCorrente:

    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto... {}".format(self))
        self.__numero = numero #atributo com dois __ é privado (private)
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):
        print("Saldo de {} do titular {}".format(self.__saldo, self.__titular))

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

    def __pode_sacar(self, valor_a_sacar):
        valor_disponivel = self.__saldo + self.__limite
        return valor_a_sacar <= valor_disponivel

    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):
        self.saca(valor)
        destino.deposita(valor)

obrigado.