@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()
Блокировать изменяемые объекты как неизменяемые в python