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

Dúvida quanto as propriedades de saque e limite

Quando assisti a aula, eu pensei que n existia relação ainda entre o saldo e o limite, mas quando fazemos um saque superior ao limite, o conta.saldo imprime o valor do saque menos o saldo em negativo. Então quando foi feita a relação entre as duas propriedades? Segue o código

class Conta:

    def __init__(self, numero, titular, saldo, limite): #Aqui nos alocamos na memória os objetos da classe Conta
        print('Construindo objeto....{}'.format(self))
        self.__numero = numero  #Estes atributos (os underscore) servem para dificultar as alterações das variáveis do objeto, mas não impossibilita
        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 saca(self, valor):
        self.__saldo -= valor 

    def trans(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  

Resultado

      conta = Conta(123, 'Lucas', 50.0, 1000.0)
Construindo objeto....<conta.Conta object at 0x000001F40B966E00>
>>> conta.saldo
50.0
>>> conta.saca(1200.0) 
>>> conta.saldo
-1150.0
2 respostas
solução!

Olá, boa noite!

Não tenho certeza se entendi a sua dúvida.

Nesse código não há relação entre limite e saldo. Teoricamente não deveria ser possível sacar um valor acima do limite nem sacar um valor acima do saldo, mas essa validação não foi implementada no método saca. Poderia ficar assim para fazer a validação:

def saca(self, valor):
    if valor > self.__limite:
        print('valor maior que o limite')
    elif valor > self.__saldo:
        print('valor maior que o saldo')
    else:
        self.__saldo -= valor

Nossa, verdade! Passei despercebido, muito obrigado.