示例#1
0
 def __getattr__(self, name):
     attr = None
     if self.__cachedir__ and Atom.is_cached(self.__cachedir__, name):
         attr = Atom.load(self.__cachedir__,
                          name,
                          is_client=self.__is_client__)
         setattr(self, name, attr)
         return attr
     if self.__source__ is None and self.__factory__ is not None:
         source = self.__factory__()
         self.__source__ = source
         #Not really the right place for this.
         #if self.__cachedir__ is not None:
         #    print '%s = %s' % (self.__cachedir__, len(self))
     if self.__source__ is not None:
         attr = getattr(self.__source__, name)
     if attr is not None and self.__index__ is not None:
         #Although this is simple and effective it is not very efficienct
         #    a = Ai(Bi(C[xy])))
         #Using this method:
         #    ax = Cx[Bi][Ai], xy = ay[Bi][Ai]
         #A better approach is to calculate the index then apply it
         #    bai = Bi[Ai], ax = Cx[bai], ay = Cx[bai]
         attr = attr[self.__index__]
     if attr is not None:
         setattr(self, name, attr)
     return attr
示例#2
0
 def __getattr__(self, name):
     attr = None
     if self.__cachedir__ and Atom.is_cached(self.__cachedir__, name):
         attr = Atom.load(self.__cachedir__, name, is_client=self.__is_client__)
         setattr(self, name, attr)
         return attr
     if self.__source__ is None and self.__factory__ is not None:
         source = self.__factory__()
         self.__source__ = source
         #Not really the right place for this.
         #if self.__cachedir__ is not None:
         #    print '%s = %s' % (self.__cachedir__, len(self))
     if self.__source__ is not None:
         attr = getattr(self.__source__, name)
     if attr is not None and self.__index__ is not None:
         #Although this is simple and effective it is not very efficienct
         #    a = Ai(Bi(C[xy])))
         #Using this method:
         #    ax = Cx[Bi][Ai], xy = ay[Bi][Ai]
         #A better approach is to calculate the index then apply it
         #    bai = Bi[Ai], ax = Cx[bai], ay = Cx[bai]
         attr = attr[self.__index__]
     if attr is not None:
         setattr(self, name, attr)
     return attr