""" @volatile decerator for storing objects in memory usage is as follows: from game.gamesrc.parents.rhns.volatile import volatile class VolatileCow: def __init__(self, scriptlink): self.scriptlink = scriptlink self.name = "Betsy" class CowStall(AnEvenniaObject): @volatile def cow(self): return VolatileCow(self.scripted_obj) """ def volatile(func): _memo = {} def _memoized(scriptlink, *args): id = (scriptlink.scripted_obj.id,func.__name__) if id in _memo: return _memo[id] else: return _memo.setdefault(id, func(scriptlink, *args)) return property(fget=_memoized)