Answer:
Here is the Python script solution.
Step-by-step explanation:
#!/usr/bin/python
"""Types of bank accounts"""
# Assignment:
# Bank Account Manager - Create a class called Account which will be an abstract
# class for three other classes called CheckingAccount, SavingsAccount and
# BusinessAccount. Manage credits and debits from these accounts through an ATM
# style program.
from __future__ import print_function
def pct_to_dec(num):
 """Returns decimal version of percent"""
 dec = float(num) / 100
 return dec
class Account(object):
 """Creates an Account"""
 def __init__(self, balance, int_rate, act_type, min_balance, **kwargs):
 self.balance = balance
 self.int_rate = int_rate
 self.act_type = act_type
 self.min_balance = min_balance
 super(Account, self).__init__(**kwargs)
 def __str__(self):
 """Returns formatted account type and balance"""
 # Charge $25 fee if balance drops below minimum
 if self.balance < self.min_balance:
 self.balance -= 25
 # Add interest
 self.balance += round(self.balance * pct_to_dec(self.int_rate), 2)
 return '{0}: ${1}'.format(self.act_type, self.balance)
class CheckingAccount(Account):
 """Creates a CheckingAccount Account"""
 def __init__(self, **kwargs):
 super(CheckingAccount, self).__init__(**kwargs)
class SavingsAccount(Account):
 """Creates a SavingsAccount Account"""
 def __init__(self, **kwargs):
 super(SavingsAccount, self).__init__(**kwargs)
class BusinessAccount(Account):
 """Creates a BusinessAccount Account"""
 def __init__(self, **kwargs):
 super(BusinessAccount, self).__init__(**kwargs)
# pylint: disable=C0103
ca1 = CheckingAccount(balance=500, int_rate=0.25, act_type='Checking Account',
 min_balance=0)
sa1 = SavingsAccount(balance=50, int_rate=0.50, act_type='Savings Account',
 min_balance=0)
ba1 = BusinessAccount(balance=4000, int_rate=0.75, act_type='Business Account',
 min_balance=5000)
# Month #1 statement, initial deposits plus interest
print(ca1)
print(sa1)
print(ba1)
print('-------------')
# Month #2 statement plus interest
# Make deposit into checking
setattr(ca1, 'balance', (ca1.balance + 1000))
# Withdraw from checking
setattr(ca1, 'balance', (ca1.balance - 500))
# Make a deposit into savings
setattr(sa1, 'balance', (sa1.balance + 100))
print(ca1)
print(sa1)
print(ba1)
print('-------------')
# Month #3 statement plus interest
# Make deposit into checking
setattr(ca1, 'balance', (ca1.balance + 2500))
# Withdraw from checking
setattr(ca1, 'balance', (ca1.balance - 700))
# Make a deposit into savings
setattr(sa1, 'balance', (sa1.balance + 100))
# Make a deposit into business
setattr(ba1, 'balance', (ba1.balance + 1000))
print(ca1)
print(sa1)
print(ba1)