【发布时间】:2012-10-16 16:38:42
【问题描述】:
我想在他们不知情的情况下对对象进行版本化。
类似这样的:
class Versioned(object):
...
def version(self):
...
class Foo(Versioned):
def __init__(self, a):
self.a = a
foo = Foo(123)
assert foo.version() == 1
foo.a = 1
foo.a = 2
foo.a = 3
assert foo.version() == 4
有简单的方法吗?
【问题讨论】:
-
你想在这里完成什么?为什么
foo.version()变了? -
我认为可以通过覆盖
__setattr__和__delattr__来在调用时增加每个实例的计数器来完成类似的操作。但是,我很难想到这会真正有用。 -
@mgilson 因为
foo,从版本 1 开始已经更改了 3 次。 -
@senderle,当有多个变更来源时,版本控制会非常有用:)
-
@Srg -- 改变对象的函数呢?这些突变算作每个函数调用 1 个版本,还是每个属性更改 1 个版本?另外,可变对象呢?如果将某些内容附加到列表中,是否要增加版本计数器?
标签: python versioning