'list'对象没有属性'info'

时间:2015-12-02 16:43:17

标签: python list class

在课堂上,我有以下代码:

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的网站指南中,它在构造函数中的空列表代码并更新它正是我的,但我的不起作用。有没有办法解决这个错误?

1 个答案:

答案 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文档。