NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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()