<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def apply_object(self, config_obj, apply_on=None):
 """Apply additional configuration from any Python object This will look for object attributes that exist in the base_config and apply their values on the current configuration object """

        self._init_flat_pointers()
        try:
            config_obj_keys = vars(config_obj).keys()  # type: Iterable[str]
        except TypeError:
            config_obj_keys = filter(lambda k: k[0] != '_', dir(config_obj))

        for config_key in config_obj_keys:
            if apply_on:
                flat_key = apply_on + (config_key, )
            else:
                flat_key = (config_key, )

            if flat_key in self._flat_pointers:
                container, orig_key = self._flat_pointers[flat_key]
                container[orig_key] = getattr(config_obj, config_key)