为什么对象中的列表不能在python中正确显示

2024-09-24 22:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Assign a value to class variable is assiging it for all instances of that object

我需要帮助。我已经习惯了java开发,现在我开始使用python。我编写了一个简单的类,其中包含一个字符串列表。在main函数中,我创建了一个对象列表,我想打印对象列表的内容。但是我的函数将所有对象的字符串打印在一起。 下面是一个例子

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

谢谢你的帮助

那个拥抱


Tags: 对象nameself列表fordefclasslines
1条回答
网友
1楼 · 发布于 2024-09-24 22:28:38

在代码中,FastData的所有实例共享相同的lines对象。像这样修理:

class FastData:

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

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

代码按这种方式工作的原因是lines是类的属性,而不是类的每个实例的属性。你知道吗

相关问题 更多 >