Immutability and Python
Ian Kelly
ian.g.kelly at gmail.com
Mon Oct 29 15:23:03 EDT 2012
On Mon, Oct 29, 2012 at 10:12 AM, andrea crotti
<andrea.crotti.0 at gmail.com> wrote:
> Also because how doi I make an immutable object in pure Python?
I sometimes use namedtuples for this.
from collections import namedtuple
MyImmutableClass = namedtuple('MyImmutableClass', 'field1 field2 field3 field4')
If you want default arguments then use a factory function. Or if you
want the class to have methods, then subclass it:
_MyImmutableClass = namedtuple('MyImmutableClass', 'field1 field2
field3 field4')
class MyImmutableClass(_MyImmutableClass):
def __new__(cls, field1, field2, field3=None, field4=42):
return super().__new__(cls, field1, field2, field3, field4)
def get_sum(self):
return self.field1 + self.field2
Cheers,
Ian
More information about the Python-list
mailing list