'This will be called on attribute access on the class or instance.'

def __get__(self, obj, type=None):

    if (obj is None):
        print('class    access')
        return self.getter
    val = self.getter(obj)
    setattr(obj, self.name, val)
    return val
