所以我的课程有一个人名的班级。我试图让程序从输入文件中读取它,然后读取它并将其安排到类中。虽然我试图将类列入列表。它给了我这个错误: AttributeError:' str'对象没有属性'追加' 我之前使用过这段代码做同样的事情,但没有从文件中读取。我想知道发生了什么导致这个错误。 这是我的代码:
class person:
def __init__(self, FName, FLast,age ):
self.FName=FName
self.FLast=FLast
self.age=age
from sys import argv
script = argv
filename = raw_input('enter filename: ')
txt = open(filename, 'r+')
count = 0
i = 2
lines = txt.readlines()
z=lines[0]
a=lines[1]
r=lines[2]
hi=person(z,a,r)
a=[hi]
while i != -1:
try:
z=lines[i]
a=lines[i+1]
r=lines[i+2]
i = i + 3
hi=person(z,a,r)
a.append[hi]
except IndexError:
i = -1
答案 0 :(得分:1)
您的代码中几乎没有问题 -
a.append[hi]
- 这不是你追加的方式,追加是一个函数,你必须调用它将值作为参数传递给它。
您将a
定义为行中的字符串 - a=lines[i+1]
- 然后您尝试附加到该字符串。
您可能需要在while
之外创建一个新列表,然后继续附加到该列表。
示例 -
classlist = []
while i != -1:
try:
z=lines[i]
a=lines[i+1]
r=lines[i+2]
i = i + 3
hi=person(z,a,r)
classlist.append(hi)
except IndexError:
i = -1
答案 1 :(得分:0)
这是因为你只从列表中获得一个元素。然后列表将返回元素作为原始类型
class person:
def __init__(self, FName, FLast,age ):
self.FName=FName
self.FLast=FLast
self.age=age
from sys import argv
script = argv
filename = raw_input('enter filename: ')
txt = open(filename, 'r+')
count = 0
i = 2
lines = txt.readlines()
z=lines[0]
a=lines[1]
r=lines[2]
hi=person(z,a,r)
a=[hi]
while i != -1:
try:
z=lines[i]
a=list(lines[i+1]) #converting it to list
r=lines[i+2]
i = i + 3
hi=person(z,a,r)
a.append(hi) #append is a method so ()
except IndexError:
i = -1