Question about implementing immutability

Thomas Jollans tjol at tjol.eu
Thu Nov 22 04:05:22 EST 2018


On 2018-11-21 21:36, Calvin Spealman wrote:
> If you want to create your own immutable class, maybe inherit from a
> namedtuple?

If you're tempted to go down that route and can require Python 3.7, use
dataclasses!


> 
> On Wed, Nov 21, 2018 at 11:45 AM Iwo Herka <iwoherka at gmail.com> wrote:
> 
>> Hello,
>>
>> Let's say I want to implement immutability for user-defined class.
>> More precisely, a class that can be modified only in its (or its
>> super-class') __init__ method. My initial idea was to do it the
>> following fashion:
>>
>>     def __setattr__(self, *args, **kwargs):
>>         if sys._getframe(1).f_code.co_name == '__init__':
>>             return super().__setattr__(*args, **kwargs)
>>         raise AttributeError()
>>
>> What do you think of this approach? Is there a better one?
>> Thanks.
>>
>> Sincerely,
>> Iwo Herka
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>>



More information about the Python-list mailing list