def get(self, key, getter_func):
        """
        Get object from the cache.
        If not found, call `getter_func` to resolve it, and put that on the top
        of the cache instead.
        """
        # Look in cache first.
        try:
            return self._data[key]
        except KeyError:
            # Not found? Get it.
            value = getter_func()
            self._data[key] = value
            self._keys.append(key)

            # Remove the oldest key when the size is exceeded.
            if len(self._data) > self.maxsize:
                key_to_remove = self._keys.popleft()
                if key_to_remove in self._data:
                    del self._data[key_to_remove]

            return value
def get ( self , key , getter_func ) : try : return self . _data [ key ] except KeyError : value = getter_func ( ) self . _data [ key ] = value self . _keys . append ( key ) if len ( self . _data ) > self . maxsize : key_to_remove = self . _keys . popleft ( ) if key_to_remove in self . _data : del self . _data [ key_to_remove ] return value
Get object from the cache.
        If not found, call `getter_func` to resolve it, and put that on the top
        of the cache instead.