I'm sure the solution may be obvious, but this problem is driving me mad. The following is my code:

class a(object):

        mastervar = []

        def __init__(self):
                print 'called a'

class b(a):

        def __init__(self):
                print 'called b'
                self.mapvar()

        def mapvar(self):
                self.mastervar.append(['b'])

class c(b):

        def __init__(self):
                print 'called c'
                self.mapvar()

        def mapvar(self):
                super(c, self).mapvar()
                self.mastervar.append(['c'])

if __name__ == '__main__':

        a1 = a()
        b1 = b()
        c1 = c()
        d1 = c() # Call C again

        print a1.mastervar
        print b1.mastervar
        print c1.mastervar
        print d1.mastervar

What I don't understand is why mastervar gets modified by each _seperate instance_ of classes that happen to extend the base class 'a'. Shouldn't mastervar be contained within the scope of the inheriting classes? Why is it being treated like a global variable and being modified by the other instances?


Thanks,

Brian "bojo" Jones
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to