On Tue, 2005-11-22 at 20:44, Tom Anderson wrote: > On Tue, 22 Nov 2005, Carsten Haese wrote: > > > On Tue, 2005-11-22 at 14:37, Christoph Zwerschke wrote: > > > >> In Foord/Larosa's odict, the keys are exposed as a public member which > >> also seems to be a bad idea ("If you alter the sequence list so that it > >> no longer reflects the contents of the dictionary, you have broken your > >> OrderedDict"). > > > > That could easily be fixed by making the sequence a "managed property" > > whose setter raises a ValueError if you try to set it to something > > that's not a permutation of what it was. > > I'm not a managed property expert (although there's a lovely studio in > Bayswater you might be interested in), but how does this stop you doing: > > my_odict.sequence[0] = Shrubbery()
It would only break if the getter returns the internal list directly. The getter should return a copy instead, which is what the keys() method already does anyway. This would ensure that the only way to alter the sequence is by replacing it in its entirety. -Carsten. -- http://mail.python.org/mailman/listinfo/python-list