D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
            If key is not found, d is returned if given, otherwise KeyError is raised.

def pop(self, *args):
        """ D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
            If key is not found, d is returned if given, otherwise KeyError is raised. """
        if len(args) < 3:
            return self._store.pop(*args)
        else:
            raise TypeError("pop expected at most 2 arguments, got {}".format(len(args)))