Pickling an instance of a class containing a dict doesn't work

Peter Otten __peter__ at web.de
Thu Oct 12 19:04:51 CEST 2006


Marco Lierfeld wrote:

> Jon Clements wrote:
> 
>>> if you change the above to:
>>>
>>> class subproject:
>>>     def __init__(self):
>>>         configuration = { }
>>>         build_steps = [ ]
>> 
>> Of course, I actually meant to write self.configuration and
>> self.build_steps; d0h!
> 
> Thank you Jon and Paul, you both were 100% right :)
> 
> But I still don't understand, why the list was saved and the dict was
> not... confusing ;)

Chances are you have inadvertently created an /instance/ attribute
build_steps which was then saved:

s = subproject()
# ...
s.configuration["name"] = "my dinner" # modifies the class attribute
s.build_steps = ["hunt", "kill", "cook"] # creates an instance attribute

Peter





More information about the Python-list mailing list