Errata for Object-Oriented Python (updates to 1st printing)
(As of 5/19/2022)
Page xxii: "Python Version(s) and Installation" says:
"All the example code in this book was written and tested using Python versions 3.6 through 3.9. All the examples should work fine with version 3.6 or newer."
This should be:
"All the example code in this book was written and tested using Python version 3.9. All the examples should work fine with version 3.9 or newer."
Page 37: In Listing 2-7, in line 13 of the
TV.py class code, the line that reads:
self.volume = self.VOLUME_MAXIMUM // # integer divide
self.volume = self.VOLUME_MAXIMUM // 2 #integer divide
Page 63: In Listing 4-3, the line that reads:
print('After depositing 100, the user's balance is:', usersBalance)
print("After depositing 100, the user's balance is:", usersBalance)
The same error should also be corrected on page 65 in Listing 4-4 , and on page 67 in Listing 4-5.
Page 101: When describing how to build a path, the following line:
pathToBall = BASE_PATH + 'images/ball.png'
should now be:
pathToBall = BASE_PATH / 'images/ball.png'
Page 123: In Listing 6-1, the line labelled with (5) should be outdented by one level.
Page 154: In the code snippet for using a Button object, the last line:
should be indented one level.
Page 191: Listing 9-5, has two errors. The line that reads:
for i in range(0, N_SHAPES):
is shown indented by one character, but it should not be indented at all.
Also, in the MOUSEBUTTONDOWN code, the line:
newText = 'Clicked on a ' + theType + ' whose area is' + area)
newText = 'Clicked on a ' + theType + ' whose area is ' + area
Page 202: In Listing 9-8, the line that reads:
if isInstance(oOther, Vector): # multiply two vectors
if isinstance(oOther, Vector): # multiply two vectors
Page 205: The code for Listing 9-9, has two errors. The line that reads:
print('Vector 2 times 5: ', v1 * 5)
print('Vector 1 times 5: ', v1 * 5)
Also, in the section that shows the generated output, the line
Vector 2 times 5: This vector has the value(15, 20)
Vector 1 times 5: this vector has the value(15, 20)
Page 206: In Listing 9-10, the code of the
__add__() method makes a call to
math.lcm(). This does work. However,
math.lcm() is only supported in Python 3.9 and later. The introduction to the first eedition of the book says that all code works with Python versions 3.6 and later, but see the first erratum in this list.
Page 223: In Listing 10-4, the parameter
value is listed twice, at positions 4 and 12. The line:
justified='left', value=None, currencySymbol='$',
justified='left', nickname=None, currencySymbol='$',
Page 250: In Listing 11-3, the last line:
does work correctly. But a better example would be to access the variable associated with the class directly and therefore should be:
print('Number of objects:', Sample.nObjects)
Page 256: In Listing 11-6, after the line:
self.nMissed = 0
there should be an additional line:
self.score = 0
Page 271: In Listing 12-2, the last line:
Page 296: In Listing 14-1, the parameter list for the __init__() method:
def __init__(self, window, loc, picPaths durationsPerImage):
is missing a comma. It should be:
def __init__(self, window, loc, picPaths, durationsPerImage):
Page 303: In Listing 14-4, in the line that defines
oWaterAnimation, the line that says:
5, 50, 192, 192, .05)
50, 192, 192, .05)
Page 305: In the second line in the interface of the
Animation class, the line:
loop=False, nickname=None, callBack=None, nIterations=1)
is missing a parameter. It should be:
loop=False, showFirstImageAtEnd=True, nickname=None, callBack=None, nIterations=1)
Page 306: In the third line in the interface of the
SpriteSheetAnimation class, the line:
autoStart=False, loop=False, nickname=None,
is missing a parameter. It should be:
autoStart=False, loop=False, showFirstImageAtEnd=True, nickname=None,
Page 320: About half way down the page, in the discussion labeled "Scenes", there is a reference to the filename:
has an incorrect name. It should be: