'Dynamic attribute access.
Args:
suffix: The attribute name.
Returns:
A configuration values.
Raises:
AttributeError if the suffix is not a registered suffix.
The first time an attribute is referenced, this method is invoked.
The value returned taken either from the config module or from the
registered default.'

def __getattr__(self, suffix):

    self._lock.acquire()
    try:
        if (not self._initialized):
            self._update_configs()
        if (suffix in self._overrides):
            value = self._overrides[suffix]
        elif (suffix in self._defaults):
            value = self._defaults[suffix]
        else:
            raise AttributeError(suffix)
        setattr(self, suffix, value)
        return value
    finally:
        self._lock.release()
