Immutability and Python

Jean-Michel Pichavant jeanmichel at sequans.com
Mon Oct 29 11:38:59 EDT 2012



----- Original Message -----
> I have a philosofical doubt about immutability, that arised while
> doing
> the SCALA functional programming course.
> 
> Now suppose I have a simple NumWrapper class, that very stupidly
> does:
> 
> class NumWrapper(object):
>     def __init__(self, number):
>         self.number = number
> 
> and we want to change its state incrementing the number, normally I
> would do this
> 
>     def increment(self):
>         self.number += 1
> 
> 
> But the immutability purists would instead suggest to do this:
> 
>     def increment(self):
>         return NumWrapper(self.number + 1)
> 
> 
> Now on one hand I would love to use only immutable data in my code,
> but
> on the other hand I wonder if it makes so much sense in Python.
> 
> My impression is that things get more clumsy in the immutable form,
> for
> example in the mutable form I would do simply this:
> 
> number = NumWrapper(1)
> number.increment()
> 
> while with immutability I have to do this instead:
> new_number = number.increment()
> 
> But more importantly normally classes are way more complicated than
> my
> stupid example, so recreating a new object with the modified state
> might
> be quite complex.
> 
> Any comments about this? What do you prefer and why?
> --
> http://mail.python.org/mailman/listinfo/python-list
> 

"return NumWrapper(self.number + 1) "

still returns a(nother) mutable object.

So what's the point of all this ?

JM


-- IMPORTANT NOTICE: 

The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


More information about the Python-list mailing list