[Python-ideas] Support other dict types for type.__dict__
Sven Marnach
sven at marnach.net
Tue Feb 28 00:39:06 CET 2012
An easy way to create immutable instances is 'collections.namedtuple':
X = namedtuple("X", "a b")
x = X(a=4, b=2)
x.a + x.b # fine
x.a = 5 # AttributeError: can't set attribute
x.c = 5 # AttributeError: 'X' object has no attribute 'c'
Tricks using 'object.__setattr__()' etc. will fail since the instance
doesn't have a '__dict__'. The only data in the instance is stored in
a tuple, so it's as immutable as a tuple.
You can also derive from 'X' to add further methods. Remember to set
'__slots__' to an empty iterable to maintain immutability.
Cheers,
Sven
More information about the Python-ideas
mailing list