Reloading is implemented fully in Python, so you can override the default implementation and reload additional modules, too. Since there are usually dependencies between classes, you typically need to click reload 2-3 times to update all referenced objects in al objects.
Example:
class ValveAnnulusAnalysisWidget(ScriptedLoadableModuleWidget):
...
def onReload(self):
logging.debug("Reloading ValveAnnulusAnalysis")
packageName='HeartValveLib'
submoduleNames=['util', 'LeafletModel', 'SmoothCurve', 'ValveRoi', 'PapillaryModel', 'ValveModel', 'HeartValves']
import imp
f, filename, description = imp.find_module(packageName)
package = imp.load_module(packageName, f, filename, description)
for submoduleName in submoduleNames:
f, filename, description = imp.find_module(submoduleName, package.__path__)
try:
imp.load_module(packageName+'.'+submoduleName, f, filename, description)
finally:
f.close()
ScriptedLoadableModuleWidget.onReload(self)