【发布时间】:2009-08-16 23:43:37
【问题描述】:
我有一个本质上是可变的类,但允许一些“类持久化”操作。例如,我可以像这样(在 Python 中)改变对象:
# create an object with y equal to 3 and z equal to "foobar"
x = MyDataStructure(y = 3, z = "foobar")
x.y = 4
但是,除了以这种方式做事之外,还有一些方法可以制作副本然后对其进行变异:
x = MyDataStructure(y=3, z="foobar")
# a is just like x, but with y equal to 4.
a = x.using(y = 4)
这是复制具有不同值的 x。显然,这不符合wikipedia 给出的部分持久性的定义。
那么你会怎么称呼这样的课程呢?准持久对象?持久对象? SortOfPersistentObject?更好的是,这有什么技术名称吗?
【问题讨论】:
-
您是否混合了术语持久性(在重新启动后仍然存在)和可变性(允许修改值)?这些是非常不同的,并且似乎在问题中可以互换使用。
-
是的,看起来你所说的持久化实际上是不可变的。 en.wikipedia.org/wiki/Immutable_object
-
@haffax:持久数据结构本质上是不可变的,但不可变数据结构和持久数据结构并不完全相同。请参阅我的问题中的维基百科链接。
标签: python data-structures functional-programming persistence naming