在课堂上,我有以下代码:
class Player (object):
def __init__ (self, first, last):
'''the constructor for a player'''
self.first = first
self.last = last
self.rating = 0
self.info = []
def update(self, pos, team, year, att, yards, tds, fumbles ):
'''create a list of information for this player for this year and
append it to the info field. Then call calcrating.'''
self.info = self.info.append(year, pos, team, att, yards, tds, fumbles)
在程序中,我使用以下代码来调用类的更新函数:
playerDict[playerName] = Player.update(line[0:2],line[2],line[3],line[13],\
line[5],line[6],line[7],line[10])
playerDict
以及playerName
已经定义,不用担心。但是,每当我尝试运行该程序并更新playerName
时,它都会给我AttributeError: 'list' object has no attribute 'info'
在Python的网站指南中,它在构造函数中的空列表代码并更新它正是我的,但我的不起作用。有没有办法解决这个错误?
答案 0 :(得分:1)
您没有实例化Player
类。因此,当您调用update
时,实例self
不会作为参数自动传递给update
方法,因此其中一个参数(列表)取而代之。
这应该有效:
player = Player() # first instantiate
player.update(...) # then do your stuff
注意:AFAIK,这只发生在Python 3中。在Python 2.x中有self
的类型检查。
顺便说一句,这条线也不会起作用。
self.info = self.info.append(year, pos, team, att, yards, tds, fumbles)
查看list.append
文档。