Changing opt/data in callback

Here https://docs.fast.ai/callback, The doc says " * Changing self.learn.data or self.learn.opt directly WILL NOT change the data or the optimizer inside the fit function."

Why not? It says

"Changing self.learn.data.train_dl or self.data.valid_dl will change them inside the fit function "

right above so why cant we change the entire data or opt class? Is the way to change things to index into the class object and just change that attribute?

It also says

When returning a dictionary with those key names, the state of the CallbackHandler will be updated with any of those changes, so in any Callback , you can change those values.

So the callback looks at items in dict and only updates those returned?