code: def selection(self):
          
          if self._cached_selection is _NO_CACHED_SELECTION:
              self._cached_selection = self._selection()
  
          return self._cached_selection
docs: See the class documentation.