lazy.py (872B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\caching\lazy.py 2 3 4 class lazy_property(object): 5 6 def __init__(self, func, name = None, doc = None): 7 self.__name__ = name or func.__name__ 8 self.__doc__ = doc or func.__doc__ 9 self.func = func 10 11 def __get__(self, obj, type = None): 12 if obj is None: 13 return self 14 value = obj.__dict__.get(self.__name__, _MISSING) 15 if value is _MISSING: 16 value = self.func(obj) 17 obj.__dict__[self.__name__] = value 18 return value 19 20 21 class _Missing(object): 22 _singleton = None 23 24 def __new__(cls): 25 if _Missing._singleton is None: 26 _Missing._singleton = super(_Missing, cls).__new__(cls) 27 return _Missing._singleton 28 29 def __repr__(self): 30 return 'missing' 31 32 33 _MISSING = _Missing()