class Conta:
def __init__(self,numero, titular, saldo, limite):
print(f"Construindo objeto ...{self} ")
self.__numero=numero
self.__titular=titular
self.__saldo=saldo
self.__limite=limite
pass
def extrato(self):
print(f"O saldo de {self.__saldo} é do titular {self.__titular}")
def deposito(self,valor):
self.__saldo+=valor
#def __pode_sacar(self, valor_saque):
# return self.__saldo - valor_saque < 0
def __pode_sacar_com_limite(self,valor_saque):
valor_para_analisar=self.__limite + self.__saldo
return valor_saque >= valor_para_analisar
#Levando em consideração que o saque é realizado apenas para o valor existente em saldo e o limite é o limite de credito, se usa a opção de pode_sacar
#Mas se levarmos em consideração que o limite é o limite de saque, devemos utilizar o metodo pode_sacar_com_o_limite.
def saca(self,valor):
if self.__pode_sacar_com_limite(valor):
print(f"O valor de saque informado não é valido com o seu saldo atual, o saldo atual é {self.__limite+self.__saldo:02f}")
#Como a atividade está seguindo os moldes do curso Alura, irei apenas deixar o metodo pode_sacar_com_o_limite.
else:
self.__saldo-=valor
def transfere(self,valor,destino):
if self.__saldo - valor < 0:
print(f"O seu saldo é insuficiente para realizar essa transferência. Saldo atual R${self.__saldo:02f}")
else:
self.saca(valor)
destino.deposito(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
@staticmethod
def codigos_banco():
return {'BB': '001', 'Caixa': '104', 'Bradesco':'237'}