Итак, я написал код с классом Bank, у которого есть метод проверки, и с классом SavingAccount, у которого есть метод изъятия, и я пытаюсь использовать агрегацию, чтобы связать их обоих, но это не работает. Валидация проверяет все. Основное внимание должно быть уделено классу Bank и классу SavingAccount, и в конце я помещаю экземпляр, который не должен работать (acc1.withdraw ()), я помещаю другие классы, чтобы вы могли опробовать код, в любом случае здесь код:
Ожидаемое поведение : Без вызова функции add_a cc () проверка должна возвращать False, и она не должна позволять мне использовать функцию изъятия ().
Фактическое поведение : я могу снять (), даже когда add_a cc () не был вызван
from abc import ABC, abstractmethod
class Account(ABC):
def __init__(self, agency, acc_number, balance):
self.agency = agency
self.acc_number = acc_number
self.balance = balance
@abstractmethod
def withdraw(self, value):
pass
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Bank:
def __init__(self):
self.account = {}
def add_acc(self, client, account):
self.account.update({f'{client}': account})
def validation(self):
if self.account:
for acc in self.account:
if acc in self.account:
return True
else:
return False
class SavingAccount(Account):
if Bank.validation:
def withdraw(self, value):
if self.balance < value:
print('Insufficient funds.')
return
self.balance -= value
print(f'{value} dollars withdrawn. Current balance: {self.balance}$')
else:
print('Account information invalid.')
class Client(Person):
def __init__(self, name, age, acc_type):
super().__init__(name, age)
self.acc_type = acc_type
bank1 = Bank()
acc1 = SavingAccount(33333, 33330, 2000)
client1 = Client('Matthew', 40, acc1)
acc1.withdraw(500) # Right here this shouldn't work without me adding bank1.add_acc()