'Getattr lazily loads modules if they\'re not already loaded.'

def __getattr__(self, name):

    submodule = ((self.__package__ + '.') + name)
    setattr(self, name, __import__(submodule))
    return getattr(self, name)
