2011-10-12 58 views
0

可能重复:
Assign a value to class variable is assiging it for all instances of that object为什么列表对象无法正常显示蟒蛇

我需要帮助。我习惯于Java开发和新的我开始Python。我写了一个简单的类,其中包含一个字符串列表。在主函数中,我创建了这个对象的列表,并且我想打印对象列表的内容。但是我的函数一起打印所有对象的所有字符串。 下面是一个例子

class FastData: 
     name='' 
     lines=[] 

     def __init__ (self, name): 
       self.name=name 

     def setName(self,name): 
       self.name = name 

     def addLine(self, line): 
       self.lines.append(line) 

     def getLines(self): 
       return self.lines 

     def getName(self): 
       return self.name 

     def printList(self): 

       for myline in self.lines: 
         print myline 

if __name__ == '__main__': 
    listes = [] 

    newData = FastData("Single") 
    newData.addLine("1") 
    newData.addLine("2") 

    listes.append(newData) 



    newData1 = FastData("Double") 
    newData1.addLine("111") 
    newData1.addLine("222") 
    listes.append(newData1) 

    for myList in listes: 
     print myList.getName() 
     myList.printList() 

,这里是我得到了什么样的输出

Single 
1 
2 
111 
222 

Double 
1 
2 
111 
222 

感谢您的帮助

Thathug

回答

4

在你的代码中,FastData份额的所有实例同样的lines对象。修复它,像这样:

class FastData: 

    # note that I've removed `name' and `lines' from here 

    def __init__ (self, name): 
      self.name = name 
      self.lines = [] 

您的代码工作又做方式的原因是lines为的类的属性,而不是类的每个个体实例

+0

感谢它的魅力 – thathug