-
Notifications
You must be signed in to change notification settings - Fork 0
/
conta.py
99 lines (79 loc) · 3.17 KB
/
conta.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from cliente import Cliente
from utils.helper import formata_float_str_moeda
class Conta:
codigo: int = 1001
def __init__(self: object, cliente: Cliente) -> None:
self.__numero: int = Conta.codigo
self.__cliente: Cliente = cliente
self.__saldo: float = 0.0
self.__limite: float = 100.0
self.__saldo_total: float = self._calcula_saldo_total
Conta.codigo += 1
def __str__(self: object) -> str:
return f'Número da conta: {self.numero} ' \
f'\nCliente: {self.cliente.nome}' \
f'\nSaldo Total: {formata_float_str_moeda(self.saldo_total)}' \
@property
def numero(self: object) -> int:
return self.__numero
@property
def cliente(self: object) -> Cliente:
return self.__cliente
@property
def saldo(self: object) -> float:
return self.__saldo
@saldo.setter
def saldo(self: object, valor: float) -> None:
self.__saldo = valor
@property
def limite(self: object) -> float:
return self.__limite
@limite.setter
def limite(self: object, valor: float) -> None:
self.__limite = valor
@property
def saldo_total(self: object) -> float:
return self.__saldo_total
@saldo_total.setter
def saldo_total(self: object, valor: float) -> None:
self.__saldo_total = valor
@property
def _calcula_saldo_total(self: object) -> float:
return self.saldo + self.limite
def depositar(self: object, valor: float) -> None:
if valor > 0:
self.saldo = self.saldo + valor
self.saldo_total = self._calcula_saldo_total
print("Depósito efetuando com sucesso")
else:
print("Erro ao efetuar depósito. Tente novamente")
def sacar(self: object, valor: float) -> None:
if 0 < valor <= self.saldo_total:
if self.saldo >= valor:
self.saldo = self.saldo - valor
self.saldo_total = self._calcula_saldo_total
else:
restante: float = self.saldo - valor
self.limite = self.limite + restante
self.saldo = 0
self.saldo_total = self._calcula_saldo_total
print("Saque efetuando com sucesso!")
else:
print("Saque não realizado. Tente novamente")
def transferir(self: object, destino: object, valor: float) -> None:
if 0 < valor <= self.saldo_total:
if self.saldo >= valor:
self.saldo = self.saldo - valor
self.saldo_total = self._calcula_saldo_total
destino.saldo = destino.saldo + valor
destino.saldo_total = destino._calcula_saldo_total
else:
restante: float = self.saldo - valor
self.saldo = 0
self.limite = self.limite + restante
self.saldo_total = self._calcula_saldo_total
destino.saldo = destino.saldo + valor
destino.saldo_total = destino._calcula_saldo_total
print("Transferência realizada com sucesso!")
else:
print("Transferência não realizado. Tente novamente")