我试图设计一个不可变的类:
class MyClass:
def __init__(self):
self._foo = 123
@property
def foo(self):
return self._foo
现在,我希望能够设置" foo
,通过返回实例的副本,其属性已修改:
import copy
[...]
def set_foo(self, value):
self_copy = copy.copy(self)
self_copy._foo = value
return self_copy
这意味着我必须更改变量的私有属性。我知道这并不是不赞成的("我们这里是所有成年人和#34;),但似乎不太理想,pylint
抱怨。
有更好的方法吗?