On Jun 20, 11:32 pm, billy <billy.cha...@gmail.com> wrote: > I don't quite understand why this happens. Why doesn't b have its own > version of r? If r was just an int instead of a dict, then it would. > > >>> class foo: > > ... r = {} > ... def setn(self, n): > ... self.r["f"] = n > ...>>> a = foo() > >>> a.setn(4) > > >>> b = foo() > >>> b.r > > {'f': 4}
r is a class attribute, that is, it is attacted to the class itself. Look at what happens when you enter foo.r at the interactive prompt: >>> foo.r {'f': 4} You want an instance attribute, a value attached to the instance of the class. You create those in the __init__ method: class foo: def __init__(self): self.r = {} def setn(self,n): self.r["n"] = n Carl Banks -- http://mail.python.org/mailman/listinfo/python-list