On Mon, 29 Oct 2012 17:05:07 +0000, andrea crotti wrote: > I meant how do I create new immutables classes myself, I guess that's > possible writing C extensions but I don't see in pure Python..
Well, you can't *quite* make a truly immutable class in pure-Python, because if *your* Python code can manipulate the class during construction then so can the caller's Python code after construction. The trivial way to make an immutable class in Python is to inherit from an already immutable class and add behaviour but no state: class MyInt(int): def inc(self): return self.__class__(self + 1) Otherwise, you can add private state and rely on the caller not shooting themselves in the foot by accessing single-underscore names, use properties to protect private state, etc. See the source code for collections.namedtuple and decimal.Decimal for some examples. Warning: namedtuple is special, because it uses some runtime exec magic; most immutable classes do not need that. And Decimal is seriously large and complicated. But you can get some ideas from them both. Also, see this: http://northernplanets.blogspot.com.au/2007/01/immutable-instances-in-python.html -- Steven -- http://mail.python.org/mailman/listinfo/python-list