快速破解:
class Versioned(object):
version = 0
def __init__(self):
self.version = 0
def _increaseVersion(self):
super(Versioned, self).__setattr__('version', self.version+1)
def __setattr__(self, attr, value):
super(Versioned, self).__setattr__(attr, value)
self._increaseVersion()
def __delattr__(self, attr):
super(Versioned, self).__delattr__(attr)
self._increaseVersion()
class Foo(Versioned):
def __init__(self, a):
self.a = a
super(Foo, self).__init__()
foo = Foo(123)
print 'value:', foo.a
print 'version:', foo.version
foo.a = 23
print 'value:', foo.a
print 'version:', foo.version
del foo.a
print hasattr(foo, 'a')
print 'version:', foo.version
输出:
value: 123
version: 1
value: 23
version: 2
False
version: 3