-
Notifications
You must be signed in to change notification settings - Fork 0
/
bankaccount.py
40 lines (37 loc) · 1.22 KB
/
bankaccount.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
class BankAccount:
id=1001
accounts = []
def __init__(self,balance=0):
if balance < 0:
raise ValueError(f"Cannot open account with {balance} balance")
self._balance = balance
self.number = BankAccount.id
BankAccount.id += 1
BankAccount.accounts.append(self)
@property
def balance(self):
return self._balance
def withdraw(self, amount):
if amount < 0:
raise ValueError(f"Can't withdraw {amount}")
if self.balance - amount < 0:
raise ValueError(f"Cannot withdraw {amount} with {self.balance} balance")
self._balance -= amount
def deposit(self, amount):
if amount < 0:
raise ValueError(f"Cannot deposit {amount}")
self._balance += amount
def transfer(self, destination, amount):
if amount < 0:
raise ValueError(f'Cannot Transfer {amount}')
self.withdraw(amount)
destination.deposit(amount)
def __repr__(self):
return f'{type(self).__name__}(balance={self.balance})'
if __name__ == '__main__':
a1 = BankAccount()
a1.deposit(10)
a1.withdraw(5)
a2 = BankAccount()
a1.transfer(a2,2)
print(BankAccount.accounts)