Dear all, I have encountered this weird problem.
I have a class definition with an __init__ argument 'd' which defaults to {}. This argument is put in the 'self.d' attribute at initialization I create two independent instances of this class; the code is as follows. class C: def __init__(self, i=10, d = {}): self.d = d self.i = i def get(self): print print self.d def set(self, dval, ival): self.d.update(dval) self.i+=ival c1=C() c1.set({'one':1},3) c1.get() del c1 c2=C() c2.set({'two':2},4) c2.get() If I run the code I obtain: {'one': 1} {'two': 2, 'one': 1} It seems that the 'self.d' argument of the second instance is the same of the 'self.d' of the first (deleted!) instance. Running the code in a debugger I discovered that, when I enter the __init__ at the second initialization, before doing self.d = d the 'd' variable already contains the 'self.d' value of the first instance and not the default argument {}. Am I doing some stupid error, or this is a problem ? Thanks in advance for any help, Paolo -- http://mail.python.org/mailman/listinfo/python-list