Question about implementing immutability

Iwo Herka iwoherka at gmail.com
Wed Nov 21 11:45:11 EST 2018


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



More information about the Python-list mailing list