[Python-Dev] Making mutable objects readonly
Ka-Ping Yee
ping@lfw.org
Tue, 30 Jan 2001 00:52:43 -0800 (PST)
Eric S. Raymond wrote:
> For different reasons, I'd like to be able to set a constant flag on a
> object instance. Simple semantics: if you try to assign to a
> member or method, it throws an exception.
Guido van Rossum wrote:
> Yes, this is a good thing. Easy to do on lists and dicts. Questions:
>
> - How to spell it? x.freeze()? x.readonly()?
I'm not so sure. There seem to be many issues here. More questions:
What's the difference between a frozen list and a tuple?
Is a frozen list hashable?
> - Should this reversible? I.e. should there be an x.unfreeze()?
What if two threads lock and then unlock the same structure?
> - Should we support something like this for instances too? Sometimes
> it might be cool to be able to freeze changing attribute values...
If you do this, i bet people will immediately want to freeze
individual attributes. Some might be confused by
a.x = [1, 2, 3]
lock(a.x) # intend to lock the attribute, not the list
a.x = 3 # hey, why is this allowed?
What does locking an extension object do?
What happens when you lock an object that implements list or dict
semantics? Do we care that locking a UserList accomplishes nothing?
Should unfreeze/unlock() be disallowed in restricted mode?
-- ?!ng
No software is totally secure, but using [Microsoft] Outlook is like
hanging a sign on your back that reads "PLEASE MESS WITH MY COMPUTER."
-- Scott Rosenberg, Salon Magazine