复制和修改不可变实例

时间:2016-11-12 00:35:00

标签: python properties immutability private

我试图设计一个不可变的类:

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抱怨。

有更好的方法吗?

0 个答案:

没有答案