Ответ 1
Вот простой способ сделать это.
class Foo(object):
def __init__(self):
self._bar = []
self._qnx = 10
self._locked= False
@property
def locked(self):
return self._locked
def lock(self):
self._locked = True
@property
def bar(self):
if self.locked:
return tuple(self._bar)
return self._bar
@property
def qnx(self):
return self._qnx
@qnx.setter
def qnx(self,val):
if self.locked:
raise AttributeError
self._qnx = val
def lock(obj):
obj.lock()