code: def get(self, key, getter_func):
          
          # 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
docs: Get object from the cache.
          If not found, call `getter_func` to resolve it, and put that on the top
          of the cache instead.