2011-10-12 41 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