gpt4 book ai didi

python - 在 python 中将可变对象锁定为不可变对象(immutable对象)

转载 作者:太空狗 更新时间:2023-10-29 18:03:16 26 4
gpt4 key购买 nike

如何在 Python 中“锁定”一个对象?

假设我有:

class Foo:
def __init__(self):
self.bar = []
self.qnx = 10

我会尽可能多地修改 foo:

foo = Foo()
foo.bar.append('blah')
foo.qnx = 20

但是我希望能够“锁定”它,以便在我尝试时

lock(foo)
foo.bar.append('blah') # raises some exception.
foo.qnx = 20 # raises some exception.

这在 Python 中可能吗?

最佳答案

这是一个简单的方法。

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()

关于python - 在 python 中将可变对象锁定为不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com