0% found this document useful (0 votes)
57 views

Introduction To Computation and Programming Using Python, Revised - Guttag, John v..127

This document discusses classes that model different types of mortgages. It describes a base Mortgage class with methods to initialize payments, record payments over time, and calculate the total amount paid. It then presents two subclasses, Fixed and FixedWithPts, that override initialization to describe fixed-rate mortgages with and without points. A third subclass, TwoRate, models a mortgage with different interest rates for an initial "teaser" period and afterward.

Uploaded by

ZhichaoWang
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views

Introduction To Computation and Programming Using Python, Revised - Guttag, John v..127

This document discusses classes that model different types of mortgages. It describes a base Mortgage class with methods to initialize payments, record payments over time, and calculate the total amount paid. It then presents two subclasses, Fixed and FixedWithPts, that override initialization to describe fixed-rate mortgages with and without points. A third subclass, TwoRate, models a mortgage with different interest rates for an initial "teaser" period and afterward.

Uploaded by

ZhichaoWang
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

110

Chapter 8. Classes and Object-Oriented Programming


outstanding at the start of each month, the amount of money to be paid each
month (initialized using the value returned by the function findPayment), and a
description of the mortgage (which initially has a value of None). The __init__
operation of each subclass of Mortgage is expected to start by calling
Mortgage.__init__, and then to initialize self.legend to an appropriate
description of that subclass.
The method makePayment is used to record mortgage payments. Part of each
payment covers the amount of interest due on the outstanding loan balance,
and the remainder of the payment is used to reduce the loan balance. That is
why makePayment updates both self.paid and self.owed.
The method getTotalPaid uses the built-in Python function sum, which returns
the sum of a sequence of numbers. If the sequence contains a non-number, an
exception is raised.
Figure 8.9 contains classes implementing two types of mortgage. Each of these
classes overrides __init__ and inherits the other three methods from Mortgage.
class Fixed(Mortgage):
def __init__(self, loan, r, months):
Mortgage.__init__(self, loan, r, months)
self.legend = 'Fixed, ' + str(r*100) + '%'
class FixedWithPts(Mortgage):
def __init__(self, loan, r, months, pts):
Mortgage.__init__(self, loan, r, months)
self.pts = pts
self.paid = [loan*(pts/100.0)]
self.legend = 'Fixed, ' + str(r*100) + '%, '\
+ str(pts) + ' points'

Figure 8.9 Fixed-rate mortgage classes


Figure 8.10 contains a third subclass of Mortgage. The class TwoRate treats the
mortgage as the concatenation of two loans, each at a different interest rate.
(Since self.paid is initialized with a 0.0, it contains one more element than the
number of payments that have been made. Thats why makePayment compares
len(self.paid) to self.teaserMonths + 1.).

You might also like