Банковские счета

Представьте, что вы являетесь разработчиком программного обеспечения в одном из ведущих банков. Банк работает над улучшением своей бэкенд-системы, и ваша задача — разработать и реализовать новые классы для представления различных типов банковских счетов.
Банк предлагает два типа счетов: текущие и сберегательные. Оба типа счетов позволяют клиентам вносить и снимать деньги, но каждый имеет свои особенности. Текущие счета имеют лимит овердрафта, который позволяет клиентам снимать деньги сверх текущего баланса до установленного лимита. Сберегательные счета приносят проценты на основе годовой процентной доходности.
Ваша задача — создать три класса на Python: BankAccount, CheckingAccount и SavingsAccount. Все они инициализируются с начальной суммой balance.
  1. Класс BankAccount должен иметь два метода: deposit и withdraw. Метод deposit увеличивает баланс на сумму депозита. Метод withdraw уменьшает баланс на сумму снятия. Оба метода должны выводить конечный баланс после операции в формате Balance: <X>. Если средств недостаточно, программа должна вывести Insufficient funds..
  1. Класс CheckingAccount должен наследовать BankAccount и добавлять дополнительный атрибут: overdraft_limit. Метод withdraw в CheckingAccount должен быть переопределён, чтобы позволить клиентам снимать деньги сверх текущего баланса до лимита овердрафта. В случае превышения лимита овердрафта программа должна вывести Withdrawal exceeds overdraft limit..
  1. Класс SavingsAccount также должен наследовать BankAccount. Он должен добавлять дополнительный атрибут при инициализации: annual_percentage_yield, и иметь метод calculate_returns, который рассчитывает доходность сбережений на основе annual_percentage_yield. Метод calculate_returns должен выводить доход в формате Returns: X.
Баланс на любом счёте никогда не должен становиться отрицательным (за исключением CheckingAccount, где он может быть отрицательным до лимита овердрафта).
Input
Output
check = CheckingAccount(500, 100); check.deposit(200); check.withdraw(800); saving = SavingsAccount(500, 0.05); saving.calculate_returns()
Balance: 700 Balance: -100 Returns: 25
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue