# from Pyramid | |
class reify(object): | |
"""Put the result of a method which uses this (non-data) | |
descriptor decorator in the instance dict after the first call, | |
effectively replacing the decorator with an instance variable. | |
""" | |
def __init__(self, wrapped): | |
self.wrapped = wrapped | |
self.__doc__ = wrapped.__doc__ | |
def __get__(self, inst, objtype=None): | |
if inst is None: | |
return self | |
val = self.wrapped(inst) | |
setattr(inst, self.wrapped.__name__, val) | |
return val |