The manual is a little inaccurate with respect to fog. Our apologies.
First, Fog is a type of node, i.e. it derives from PandaNode; it is not a NodePath. If you want to parent a Fog object into the scene graph, the easiest way is to wrap a NodePath around it and use the reparentTo() method of the NodePath, like this:
np = NodePath(self.fog)
np.reparentTo(render)
A full explanation of the distinction between a PandaNode, which is the basic atom of the scene graph, and a NodePath, which is a wrapper around a node and provides a high-level API for fundamental scene graph operations, should probably be in one of the first chapters of the manual.
In any case, reparenting the Fog into the scene graph has absolutely nothing to do with what part of the scene it applies to. In fact, if you are calling setExpDensity(), which puts the fog in exponential mode (as opposed to its default, linear mode), then the node that the Fog object is parented to has no effect whatsoever, and you probably shouldn’t bother trying to parent it into the graph. (The node that the Fog is parented to only affects the fog when it is linear mode, and then its effect is to change the origin and direction of the fog.)
The way that that you actually enable the Fog is via the NodePath.setFog() method. If you want to fog the whole world, do this:
render.setFog(self.fog)
To turn off the fog again:
render.clearFog()
Note that fog does not affect the clear color of the window, so unless you have a completely interior scene you may also want to change your window’s background color to match the color of your fog:
base.setBackgroundColor(1, 1, 0)
David