Thomas Wouters wrote: > Actually, no, reload() has to remove the module from sys.modules and > load it anew.
That's not what reload currently does for Python modules. The module object stays the same (so that anybody who imported it will also see the reload's effect). > The reason for this is that any instances of types defined > in the module can still live, after the reload, and they would still > refer to their old-module-object-referring types. (And, as you said, > this is a reason to keep the 'state' in module objects.) Are you expecting that reload of an extension module will actually load the current code from disk? This can't really work: on some systems, you can't update the DLL while it is in use; on others, it might not be possible to load the same shared library twice. > This raises the question whether modules should be able to > participate in cyclic GC... > > Don't they already? They have a traverse proc, just not a clear proc. Sure: for the state that is common to all modules. For the per-module state, traverse functionality might also be needed, which would mean that the module needs to implement it. Regards, Martin _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com