Peter Otten wrote: > Charles Hixson wrote: > >> This is just a first sketch, and I haven't yet attempted to test it, so >> what I'm hoping for is criticisms on the general approach. >> >> class RODict: > >> def __init__ (self, ddict = {}): > > Default values are evaluted just once when the method is created. Mutable > default values mean trouble: > >>>> class D: > ... def __init__(self, dict={}): > ... self.dict = dict > ... def __setitem__(self, key, value): > ... self.dict[key] = value > ... def __repr__(self): return repr(self.dict) > ... >>>> d1 = D() >>>> d2 = D() >>>> d1[1] = 42 >>>> d2[2] = 42 >>>> d1 > {1: 42, 2: 42} >>>> d2 > {1: 42, 2: 42}
D'oh, that was just and instintive reaction. You may already know that... Of course it doesn't matter as long as no attempt is made to mutate the mutable value. -- https://mail.python.org/mailman/listinfo/python-list