我正在为学校的项目编写一些代码。我正在读取我创建的列表作为具有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]
希望有人打电话给我帮助。感谢
答案 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
以获取(反向)名字值