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

Reply via email to