[英]Lock mutable objects as immutable in python
How do I "lock" an object in Python? 如何在Python中“锁定”对象?
Say I have: 说我有:
class Foo:
def __init__(self):
self.bar = []
self.qnx = 10
I'd modify foo as much as I want: 我会尽可能多地修改foo:
foo = Foo()
foo.bar.append('blah')
foo.qnx = 20
But then I'd like to be able to "lock" it such that when I try 但是,当我尝试时,我希望能够“锁定”它
lock(foo)
foo.bar.append('blah') # raises some exception.
foo.qnx = 20 # raises some exception.
Is that possible in Python? 这可能在Python中吗?
Here is a simple way of doing this. 这是一种简单的方法。
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.