Kristofer Tengström wrote: > Hi, I'm having trouble creating objects that in turn can have custom > objects as variables. The code looks like this: > > --------------------------------------------- > > class A: > sub = dict()
Putting it into the class like this means sub is shared by all instances. > def sub_add(self, cls): > obj = cls() > self.sub[obj.id] = obj > > class B(A): > id = 'inst' > > base = A() > base.sub_add(B) > base.sub['inst'].sub_add(B) > > print # prints a blank line > print base.sub['inst'] > print base.sub['inst'].sub['inst'] > > ---------------------------------------------- > > Now, what I get from this is the following: > <__main__.B instance at 0x01FC20A8> > <__main__.B instance at 0x01FC20A8> > Why is this? What I want is for them to be two separate objects, but > it seems like they are the same one. I've tried very hard to get this > to work, but as I've been unsuccessful I would really appreciate some > comments on this. I'm sure it's something really easy that I just > haven't thought of. Your class A needs an initialiser: class A: def __init__(self): self.sub = {} # one dict per instance # ... -- http://mail.python.org/mailman/listinfo/python-list