[Tutor] mutability, __new__
carroll at tjc.com
Wed Jan 17 02:32:50 CET 2007
[hijacking the "question about object oriented programming and
inheritance using datetime module" thread here....]
On Tue, 16 Jan 2007, Kent Johnson wrote:
> I think you are missing the line
> datetime.date.__init__(self, year, month, day)
> somewhere in here.
Yeah; sloppy of me.
> I am very surprised that this works, my understanding was that
> datetime.date was immutable and required overriding __new__() rather
> than __init__(). But it does work...
Yeah, come to think of it, that is interesting.
A quick test shows that datetime.date is apparently immutable, because it
can be used as a dictionary key.
But if it's immutable, then __init__ shouldn't work, and, as you say, you
gotta go with __new__.
I have to admit, I don't completely comprehend the use of __new__, but the
discussion at http://www.python.org/download/releases/2.2.3/descrintro/
explained quite a lot.
How can you find if a particular object is immutable or not? Or,
relatedly, if you wanted to define an object that was immutable, how would
you do it?
More information about the Tutor