I have a class like:
class A:
def __init__(self):
self.data = {}
and at some moment I want to prohibit self.data
fields modification.
I've read in PEP-416 rejection notice that there are a lot of ways to do it. So I'd like to find what they are.
I tried this:
a = A()
a.data = types.MappingProxyType(a.data)
That should work but first, its python3.3+ and second, when I do this "prohibition" multiple times I get this:
>>> a.data = types.MappingProxyType(a.data)
>>> a.data = types.MappingProxyType(a.data)
>>> a.data
mappingproxy(mappingproxy({}))
though it would be much better to get just mappingproxy({})
as I am going to "prohibit" a lot of times. Check of isinstance(MappingProxyType)
is an option, but I think that other options can exist.
Thanks