-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabstract_class.py
72 lines (53 loc) · 1.62 KB
/
abstract_class.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
""" CLASSES ABSTRATAS """
from abc import ABC, abstractmethod
class Conta(ABC):
def __init__(self, agencia, conta, saldo) -> None:
self._agencia = agencia
self._conta = conta
self._saldo = saldo
@property
def agencia(self):
return self._agencia
@property
def conta(self):
return self._conta
@property
def saldo(self):
return self._saldo
@saldo.setter
def saldo(self, valor):
if not isinstance(valor, (int, float)):
raise ValueError("Saldo precisa ser numérico.")
self._saldo = valor
def depositar(self, valor):
if not isinstance(valor, (int, float)):
raise ValueError("Valor do depósito precisa ser numérico.")
self.saldo += valor
self.detalhes()
def detalhes(self):
print(f'Agência: {self.agencia}', end=' ')
print(f'Conta: {self.conta}', end=' ')
print(f'Saldo: {self.saldo}')
@abstractmethod
def sacar(self):
pass
class ContaPoupanca(Conta):
def sacar(self, valor):
if self.saldo < valor:
print('Saldo insuficiente')
return
self.saldo -= valor
self.detalhes()
class ContaCorrente(Conta):
def __init__(self, agencia, conta, saldo, limite=100) -> None:
super().__init__(agencia, conta, saldo)
self._limite = limite
@property
def limite(self):
return self._limite
def sacar(self, valor):
if (self.saldo + self.limite) < valor:
print('Saldo insuficiente')
return
self.saldo -= valor
self.detalhes()