All pastes #343989 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-02-07 13:01 UTC
rendered paste body
class 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
5
print m.z
print m.z.__get__(m)