code: def _set_params_callback(self, **params):
          
          # model after sklearn.utils._BaseCompostion._set_params
          # 1. All steps
          if 'callbacks' in params:
              setattr(self, 'callbacks', params.pop('callbacks'))
  
          # 2. Step replacement
          names, _ = zip(*getattr(self, 'callbacks_'))
          for key in params.copy():
              name = key[11:]  # drop 'callbacks__'
              if '__' not in name and name in names:
                  self._replace_callback(name, params.pop(key))
  
          # 3. Step parameters and other initilisation arguments
          for key in params.copy():
              name = key[11:]
              part0, part1 = name.split('__')
              kwarg = {part1: params.pop(key)}
              callback = dict(self.callbacks_).get(part0)
              if callback is not None:
                  callback.set_params(**kwarg)
              else:
                  raise ValueError(
                      "Trying to set a parameter for callback {} "
                      "which does not exist.".format(part0))
  
          return self
docs: Special handling for setting params on callbacks.