1
resposta

AttributeError: 'tuple' object has no attribute 'saca'

Assim como o colega Lucas, a implementação da função "saca" com a verificação do limite retornou erro que o objeto tuple não tem atributo "saca". O código está colado em sua integridade.

O terminal está da seguinte maneira:

from conta import Conta

conta = (123, "Guilheme", 122.3, 1000.0)

conta.saca(1200.0)

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'tuple' object has no attribute 'saca'

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("Contruindo Objeto... {}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):
        print("Saldo {} 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(valor <= (self.__saldo + self.__limite)):
            self.__saldo -= valor
        else:
            print("O valor {} passou o limite".format(valor))

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

    @property
    def saldo(self):
        return self.__saldo

    @property
    def titular(self):
        return self.__titular

    @property
    def limite(self):
        return self.__limite

    @limite.setter
    def limite(self, limite):
        self.__limite = limite
1 resposta

Bom dia Guilherme,

Olhando os dados inseridos no terminal é possível verificar que no momento sua variável conta não é do tipo Conta e sim uma tupla. Para o interpretador poder utilizar os métodos da classe conta vc deve alterar para que a variável receba uma instância de Conta.

Dessa forma: conta = Conta(123, "Guilheme", 122.3, 1000.0)