You have been bitten by a well known "feature".  You used
a mutable as default value in your argument list for __init__.

See:
http://www.nexedi.org/sections/education/python/tips_and_tricks/python_and_mutable_n/view


It would be better to write:

class structure:
    def __init__(self, folders = None):
        self.folders=folders or []

-Larry Bates


keithlackey wrote:
> I'm relatively new to python and I've run into this problem.
> 
> 
> DECLARING CLASS
> 
>       class structure:
>               def __init__(self, folders = []):        
>                       self.folders = folders
>         
>       def add_folder(self, folder):
>               self.folders.append(tuple(folder))
> 
> 
> 
> Now I try to make an instance of this class
> 
>       structure1 = structure()
>       structure1.add_folder([('foo'),])
>       print structure1.folders
> 
> This returns: [('foo',)]
> 
> This works fine. But when I try to make another instance of that class...
> 
>       structure2 = structure()
>       print structure2.folders
> 
> This now also returns: [('foo',)]
> Even though I haven't added any folders to this new instance
> 
> What am I doing wrong?
> 
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to