rendered paste bodyclass RevealAccess(object):
"""A data descriptor that sets and returns values
normally and prints a message logging their access.
"""
def __init__(self, initval=None, name='var'):
self.val = initval
self.name = name
def __get__(self, obj, objtype=None):
print 'Retrieving', self.name
return self.val
def __set__(self, obj, val):
print 'Updating' , self.name
self.val = val
class MyClass(object):
x = RevealAccess(10, 'var "x"')
y = 5
def __init__(self):
self.z = RevealAccess(10, 'var "z"')
m = MyClass()
print m.x
m.x = 20
print m.x
print m.y
print m.z