[Python-Dev] Re: Making mutable objects readonly

Guido van Rossum guido@digicool.com
Mon, 29 Jan 2001 21:59:17 -0500


> > - How to spell it?  x.freeze()?  x.readonly()?
> 
> I like "freeze", it'a a clear imperative where "readonly()" sounds
> like a test (e.g. "is this readonly()?")

Agreed.

> > - Should we support something like this for instances too?  Sometimes
> >   it might be cool to be able to freeze changing attribute values...
> 
> Moshe Zadka sent me a hack that handles instances:
[...]

OK, so no special support needed there.

> > - Should this reversible?  I.e. should there be an x.unfreeze()?
> 
> I gave this some thought earlier today.  There are advantages to either
> way.  Making freeze a one-way operation would make it possible to use
> freezing to get certain kinds of security and integrity guarantees that
> you can't have if freezing is reversible.
> 
> Fortunately, there's a semantics that captures both.  If we allow
> freeze to take an optional key argument, and require that an unfreeze
> call must supply the same key or fail, we get both worlds.  We can
> even one-way-hash the keys so they don't have to be stored in the
> bytecode.
> 
> Want to lock a structure permanently?  Pick a random long key.  Freeze
> with it.  Then throw that key away...

Way too cute.  My suggestion freeze(0) freezes forever, freeze(1)
can be unfrozen.

--Guido van Rossum (home page: http://www.python.org/~guido/)