New submission from glubglub:

In the class below, 'arr' list should be unique for each instance of
class Blah. In reality, 'arr' is shared by all instances of 'Blah'

class Blah:
        arr = []    # this member should not be 
                    #   shared across all instances of blah
        s = ''

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

        def __str__( self):
                return '[%s, %s]' % (self.s, str(self.arr))

objs = []
objs.append(Blah('obj-a'))
objs.append(Blah('obj-b'))
objs.append(Blah('obj-c'))

# add to first object's array
objs[0].arr.append('abc')

# bug: 'abc' got added to all arrays
# print all arrays
for obj in objs:
        print obj

------------------------------
Actual Output:
[obj-a, ['abc']]
[obj-b, ['abc']]
[obj-c, ['abc']]

Expected Output:
[obj-a, ['abc']]
[obj-b, []]
[obj-c, []]

----------
components: Interpreter Core
messages: 57449
nosy: glubglub
severity: normal
status: open
title: List member inside a class is shared by all instances of the class
versions: Python 2.3, Python 2.4, Python 2.5

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1437>
__________________________________
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to