Python Creating A Readonly Wrapper Class Without Modifying Wrapped Class
I have a base class that looks like follows: class Base: def __init__(self, prop): self.prop = prop I want to create a wrapper class ReadonlyWrapper that is read-only,
Solution 1:
This can be achieved by overriding __setattr__
in the following way:
classReadonlyWrapper(Base):
_initialized = False
def__init__(self, *args, **kwargs):
super(ReadonlyWrapper, self).__init__(*args, **kwargs)
self._initialized = True
def__setattr__(self, key, value) -> None:ifself._initialized:
raise PermissionError()
else:super().__setattr__(key, value)
Once _initialized
is set to True
, any attempt to set an attribute will raise a PermissionError
.
Post a Comment for "Python Creating A Readonly Wrapper Class Without Modifying Wrapped Class"