Object containing a list of objects.

cocolombo cocolombo at gmail.com
Sat Aug 28 19:48:14 CEST 2010


Hello.

I am putting objects (test) into a container object (tests) and the
test object is also a container for a another list of object
(scores).

Problem is that all instances of class tests have the same value.

To illustrate:

class score(object):
    val = 0
    def __init__(self, val):
        self.val = val
    def __str__(self):
        return str(self.val) + "\n"

class test(object):
    listOfScores = []
    def __str__(self):
        ret = ""
        for s in self.listOfScores:
            ret += str(s)
        return ret

class tests(object):
    listOfTest = []
    def __str__(self):
        ret = ""
        for t in self.listOfTest:
            ret += str(t)
        return ret


Now I run the script
:
======================
score1 = score(10)
score2 = score(20)
score3 = score(30)
score4 = score(40)

test1 = test()
test2 = test()


test1.listOfScores.append(score1)
test1.listOfScores.append(score2)
test2.listOfScores.append(score3)
test2.listOfScores.append(score4)

theTests = tests()
theTests.listOfTest.append(test1)
theTests.listOfTest.append(test2)

print theTests.listOfTest[0]
print theTests.listOfTest[1]

==============

This is the data structure I am EXPECTING:

theTests
     ----test1
             ---score1=10
             ---score2=20
     ----test2
             ---score3=30
             ---score4=40


But what I get is this:

theTests
            ----test1
                  ---score1=10
                  ---score2=20
                  ---score3=30
                  ---score4=40
             ----test2
                  ---score1=10
                  ---score2=20
                  ---score3=30
                  ---score4=40

What is wrong ?

Thanks



More information about the Python-list mailing list