<p>在Python中,缩进起主要作用。
问题清单:
1) <code>__init__()</code>应该在Player类中。否则初始化将无法工作。你知道吗</p>
<p>2)其他函数<code>def calculatePoints(self</code>)也应该在<code>class Player</code>中。当前在代码中,它是在类之外定义的。你知道吗</p>
<p>3)<code>def toString(self)</code>也应该在<code>class Player</code>之内。你知道吗</p>
<pre><code>3.1) Also the concatenation of string and int is not permitted.
3.2) The variable `self.touchdowns` is not initialized in the def toString of class Player.
3.3) The alternate way to print the class with significant information
about class can be written in this manner.
class Player:
POINTS_PER_PASSING_YARD = 0.04
POINTS_PER_PASSING_TOUCHDOWN = 4
POINTS_PER_INTERCEPTION = -1
POINTS_PER_RUSHING_YARD = 0.1
POINTS_PER_RUSHING_TOUCHDOWN = 6
POINTS_PER_RUSHING_FUMBLE = -2
POINTS_PER_RECEPTION_YARD = 0.1
POINTS_PER_RECEPTION_TOUCHDOWN = 6
def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles):
self.name = name
self.team = team
self.rushingYards = rushingYards
self.rushingTouchdowns = rushingTouchdowns
self.rushingFumbles= rushingFumbles
def calculatePoints(self):
return self.rushingYards * POINTS_PER_RUSHING_YARD + self.rushingTouchdowns * POINTS_PER_RUSHING_TOUCHDOWN + self.rushingFumbles * POINTS_PER_RUSHING_FUMBLE
def __str__(self):
return "name: %s team: %s passing yards: %r rushing yards: %r rushingTouchdowns: %r interceptions: %r" % (self.name, self.team, self.passingYards, self.rushingYards, self.rushingTouchdowns ,self.interceptions)
</code></pre>
<p>4)<code>self.position = position</code>需要在<code>class QB</code>中初始化,如下所示:</p>
<pre><code>class QB(Player):
def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles, passingYards, passingTouchdowns, interceptions, position="QB"):
super().__init__(name, team, rushingYards, rushingTouchdowns, rushingFumbles)
self.passingYards = passingYards
self.passingTouchdowns = passingTouchdowns
self.interceptions = interceptions
self.position = position
def __str__(self):
return "position: " + self.position + super().__str__()
</code></pre>