Inheritance in Python

Use your knowledge of Python Classes and Python Inheritance to model several types of bank accounts.

Create your classes in the provided bank.py file.

Exercise: Write Bank Account Classes

Let's practice writing classes and using inheritance by modelling different types of Bank accounts.

Part 1: Making the Parent Class

  • Create a base BankAccount class
    • Bank accounts keep track of their current balance
      • the balance starts at 0 until a deposit is made
    • Bank accounts are created with a default interest rate of 2%
    • Bank accounts have a deposit method
      • the deposit method returns the balance of the account after adding the deposited amount.
    • Bank accounts have a withdraw method
      • the withdraw method returns the balance after the money was successfully withdrawn.
    • Bank accounts return False if someone tries to deposit or withdraw a negative amount.
    • Bank accounts have a accumulate_interest method that sets the balance equal to the balance plus the balance times the interest rate
      • accumulate_interest returns the balance of the account after calculating the accumulated interest

Sample Input:

basic_account = BankAccount()
basic_account.deposit(600)
print("Basic account has ${}".format(basic_account.balance))
basic_account.withdraw(17)
print("Basic account has ${}".format(basic_account.balance))
basic_account.accumulate_interest()
print("Basic account has ${}".format(basic_account.balance))
print()

Sample Output:

Basic account has $600
Basic account has $583
Basic account has $594.66

Part 2: Making a Child Class Override Parent Class Methods

  • Create a ChildrensAccount class
    • Children's bank accounts have an interest rate of Zero.
    • Every time accumulate_interest is executed on a Child's account the account always gets $10 added to the balance.

Sample Input:

childs_account = ChildrensAccount()
childs_account.deposit(34)
print("Child's account has ${}".format(childs_account.balance))
childs_account.withdraw(17)
print("Child's account has ${}".format(childs_account.balance))
childs_account.accumulate_interest()
print("Child's account has ${}".format(childs_account.balance))
print()

Sample Output:

Child's account has $34
Child's account has $17
Child's account has $27

Part 3: Making Overdraft Account With New Properties

  • Create an OverdraftAccount class
    • An overdraft account penalizes customers for trying to draw too much money out of their account.
    • Overdraft accounts are created with an overdraft_penalty property that defaults to $40.
    • Customer's aren't allowed to withdraw more money than they have in their account. If a customer tries to withdraw more than they have then the withdraw method returns False and their balance is deducted only by the amount of the overdraft_penalty.
    • Overdraft accounts don't accumulate interest if their balance is below zero, but return False instead.

Sample Input:

  overdraft_account = OverdraftAccount()
  overdraft_account.deposit(12)
  print("Overdraft account has ${}".format(overdraft_account.balance))
  overdraft_account.withdraw(17)
  print("Overdraft account has ${}".format(overdraft_account.balance))
  overdraft_account.accumulate_interest()
  print("Overdraft account has ${}".format(overdraft_account.balance))

Sample Output:

Overdraft account has $12
Overdraft account has $-28
Overdraft account has $-28

Licensing

All content is licensed under a CC­BY­NC­SA 4.0 license. All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact legal@ga.co.