Immutable instances, constant values

Ben Finney bignose+hates-spam at benfinney.id.au
Sat Nov 19 16:56:33 EST 2005


Steven D'Aprano <steve at removethiscyber.com.au> wrote:
> On Fri, 18 Nov 2005 14:32:46 +1100, Ben Finney wrote:
> > Is there any difference between a Python immutable value, and a
> > constant? I suppose "constant" also implies that the *name* binds
> > unchangeably to a particular value. Is that meaningful?
> 
> That's precisely how I understand "constant" to be useful.

The Python docs don't really talk about such a thing. However, the
None name cannot be re-bound. Is that all that's required to have a
"constant" in Python?

If so, it's part of the assignment statement, and not something the
object itself can decide. True?

> > How does one actually ensure an object is immutable? Is it a
> > matter of overriding a bunch of methods, or is ther a neater way?

Really hoping someone can come up with an answer for this.

> > Is it bad style to make a user-defined class that creates
> > immutable objects? Why?
> 
> I can't see why it would be bad style. That's what FrozenSet does.

"from foo import *" is supported in the language, but is still bad
style. FrozenSet was *added* to the language (2.2), so that's evidence
that Guido thinks it's a good idea. But I'd still like direct
discussion: is making one's class instances immutable bad style?

-- 
 \      "Say what you will about the Ten Commandments, you must always |
  `\         come back to the pleasant fact that there are only ten of |
_o__)                                      them."  -- Henry L. Mencken |
Ben Finney



More information about the Python-list mailing list