'Return the value of a setting and cache it in self.__dict__.'

def __getattr__(self, name):

    if (self._wrapped is empty):
        self._setup(name)
    val = getattr(self._wrapped, name)
    self.__dict__[name] = val
    return val
