附加一个类来列出附加str错误python的结果

时间:2015-07-28 05:23:41

标签: python append

所以我的课程有一个人名的班级。我试图让程序从输入文件中读取它,然后读取它并将其安排到类中。虽然我试图将类列入列表。它给了我这个错误: 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

2 个答案:

答案 0 :(得分:1)

您的代码中几乎没有问题 -

  1. a.append[hi] - 这不是你追加的方式,追加是一个函数,你必须调用它将值作为参数传递给它。

  2. 您将a定义为行中的字符串 - a=lines[i+1] - 然后您尝试附加到该字符串。

  3. 您可能需要在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