Zachary Pincus wrote: > > No, just one particular module that needs to do some slow things. > I'd like for a user to just be able to type > "import foo" > and have the foo module's type be some special type. None of the > options below really allow this to happen with one step. It would be > more like "import lazyFoo; import foo". > > What I'm doing now is in 'foo.py' performing surgery a la: > sys.modules[__name__] = MyModuleClass(...) > but that's ugly, and can break the reload mechanism, and causes some > other troubles.
modules must go to sys.modules. reloading would have to be prevented by simple test. yet if your module is ready no-one would reload. yet executing the module for reload in that trick namespace will also do to a certain degree. you could also try to replace / update the original modules's __dict__ you still didn't mention the original motivation for that lazy-moduletype replacement. If its your module anyway, you could (auto-)rework your functions/class to do delayed initializations at the end of the module. something like: for func in <iter-certain-funcs-in-globals()>: globals()[func_name]=hook_lazy_init(func) -robert -- http://mail.python.org/mailman/listinfo/python-list