On Tue, 01 May 2007 00:32:20 +0000, John Nagle wrote: > [EMAIL PROTECTED] wrote: > >>>In addition to the warning that reload() does not recursively reload >>>modules that the reloaded module depends on, be warned that reloading a >>>module does not magically affect any functions or objects from the old >>>version that you may be holding on to. > > Maybe reloading modules should be deprecated. The semantics > are awful, and it interferes with higher-performance implementations.
I'd hate for reload to disappear, it is great for interactive development/debugging, at least under some circumstances. (If you have complex and tangled class hierarchies, it might not be powerful enough.) As for the semantics being awful, I disagree. reload() does exactly what it claims to do, no more, no less. I wouldn't expect reload(module1) to reload modules 2 through 5 just because they were imported by module1. If I wanted them reloaded, I'd say so. I'll admit to being puzzled for about five minutes the first time I found my objects' behaviour wasn't being updated when I did a reload, but it didn't take me long to slap myself in the head. Of course not -- if the old objects are still around, they'll keep their old behaviour. That's kind of an inconvenience, but unavoidable. I certainly DON'T want Python to magically change objects (apart from module objects themselves) on a reload. Maybe reload() should be pulled out of the core Python language and turned into an optional function. If (if!) Jython doesn't do interactive development, then it doesn't need reload(); CPython, which does, does. -- Steven D'Aprano -- http://mail.python.org/mailman/listinfo/python-list