Escreva um programa de bancos que possua:
Uma classe Banco com os atributos - private total - public TaxaReserva - private reservaExigida
E métodos - public podeFazerEmprestimo(valor) --> bool - public MudaTotal(valor)
E uma classe conta com os atributos - private saldo - private ID - private senha
E métodos - public deposito(senha, valor) - public saque(senha, valor) - public podeReceberEmprestimo(valor) --> bool - public saldo --> float
SOlução:
class Banco(object):
__total =10000
TaxaReserva = 0.1
__reservaExigida = __total*TaxaReserva
def podeFazerEmprestimo(self,valor):
if self.__saldo >= 1000:
return True
def MudaTotal(self,valor):
Banco.__total += valor
return Banco.__total
class Conta(Banco):
def __init__(self,saldo,ID,senha):
self.__saldo = saldo
self.__ID = ID
self.__senha = senha
def deposito(self,senha, valor):
Conta.__saldo += valor
def saque(self,senha, valor):
if (senha == self.__senha) and (valor <= self.__saldo) :
self.__saldo -= valor
def podeReceberEmprestimo(self,valor):
pass
def saldo(self):
return self.__saldo
## def __call__(self,x): # torna a instância callable!
## return x
itau = Conta(1000,123456,"POO")
itau.saque("POO",200)
print(itau.saldo())
#print(callable(itau)) #é instancia! não é callable! exceto se criar __call__
#print(callable(Conta))# é callable!
#print(callable(itau)) se criar o def __call___, torna-se callable!
print(Banco.total)
Erro:
O erro é no Banco.total, que é privado:
"AttributeError: type object 'Banco' has no attribute 'total'"
Como acessar o atributo privado?