15 lines
430 B
Python
15 lines
430 B
Python
from functools import update_wrapper
|
|
|
|
class reify(object):
|
|
"""Adapted from Pyramid's `reify()` memoizing decorator."""
|
|
def __init__(self, method):
|
|
self.method = method
|
|
update_wrapper(self, method)
|
|
|
|
def __get__(self, instance, objtype=None):
|
|
if instance is None:
|
|
return self
|
|
value = self.method(instance)
|
|
instance.__dict__[self.__name__] = value
|
|
return value
|