Lists are weird when they are instance members
python newbie
mesteve_b at hotmail.com
Sat Jan 3 17:20:59 EST 2004
hey,
okay, I'm trying to figure out why my books: Quick Python, Python in a
Nutshell, Python Cookbook and Learning Python don't say anything about the
weird behavior of a list when you have one as an object instance member.
for instance (my first pun of 2004), if I have,
test.py
----------------
global_filegroup_array = [] # array of filegroup objects
class FileGroup:
a = 0
mylist = [] # here it is
def put_stuff_in_my_list(self, anyfile):
self.mylist.append( get just a single string from file) #
pls excuse the psuedo
def __init__(self):
put_stuff_in_my_list(anyfile)
def main(): # do ten times: instantiate the
above object, and add to the global array
for i in xrange(10):
filegroup = FileGroup()
global_filegroup_array.append(filegroup)
# print the list contents
print global_filegroup_array[0].mylist
------------ end of file
Output is: [u'.string1', u'.string2', u'.string3' ] # only
u'string1' should show up
No matter which index I use into the global array, I always get ALL of
the strings
showing up. I should only get u'string1' showing up, and u'string2'
if
I used "[1].mylist"
How I resolved it, is by slipping in
self.mylist = []
before
put_stuff_in_my_list(anyfile)
in __init__(self)
Why should I have to empty out the list when it's a member of a newly
instantiated object?
thanks
p.s. ( I'm actually not doing exactly the thing with the
files, but instead iterating through a xml file with dom,
debugging it showed the behavior )
More information about the Python-list
mailing list