Python属性错误 - 类型对象没有属性

时间:2015-12-06 22:55:52

标签: python python-3.x

我正在为学校的项目编写一些代码。我正在读取我创建的列表作为具有5个属性的文本文件。这是我的类对象代码:

class studentclass(object):
    def __init__(self,firstname,lastname,classno,correct,mydate):
        self.firstname = firstname
        self.lastname = lastname
        self.classno = classno
        self.correct = correct
        self.mydate = mydate

稍后在程序中我使用此代码读取数据,对其进行排序并执行一些计算:

myList = [studentclass]
totalnoofrecords = 0
counter = 0

for counter in range(0,totalnoofrecords):
    firstname = myList.firstname[counter]
    lastname = myList.lastname[counter]
    classno = myList.classno[counter]
    correct = myList.correct[counter]
    mydate = myList.mydate[counter]
    newname = myList.firstname[counter +1]
    if newname == firstname:
            grade = grade + studentclass.correct(counter +1)
            nummberofattempts = 2
    newname2 = studentclass.firstname(counter +2)
    if newname2 == firstname:
            grade = grade + studentclass.correct(counter +2)
            nummberofattempts = 3
    mean = grade / numberofattempts

    print ("num ",counter ,"=", myList[counter])

但它不起作用。我收到以下错误消息:

  

AttributeError:'list'对象没有属性'firstname'

错误消息指向代码的这一行:

  

firstname = myList.firstname [counter]

希望有人打电话给我帮助。感谢

2 个答案:

答案 0 :(得分:1)

在您的代码中,您引用了mylist.firstname。什么是mylist?这是一个清单。它是否有firstname属性?错误告诉您它没有,并查看代码,您不会将该属性添加到列表中。

列表的每个元素都具有该属性。也许你的意思是获得列表中某个元素的firstname属性。也许以下可能是?

for counter in range(0,totalnoofrecords):
    firstname = myList[counter].firstname
    lastname = myList[counter].lastname
    ...

在python中,当你得到类似&#34的错误时;对象X没有属性Y",你通常可以依赖它是一个真正的语句。那么,问你自己"为什么X没有那个属性?"。它通常要么a)你忘了定义那个属性,b)你拼错了属性,或者拼错了X,或c)X不是你想的那样。

答案 1 :(得分:1)

你有几个问题。正如Alex S.指出的那样,你的myList是一个List,特别是它是一个包含一个元素的列表:一个类构造函数 我想你想要的是:

  # assumption: you have textlines, 
  # which is an array of lines of the form firstname,lastname,blah
  myList = [studentclass(*(args.split(",")) for args in textlines]

然后执行myList[counter].firstname以获取(反向)名字值