Don't use "exec" in find_class(). It's slow, unnecessary, and (as AMK

points out) it doesn't work in JPython Applets.
This commit is contained in:
Guido van Rossum 1999-03-25 21:58:59 +00:00
parent 605ebddbea
commit 397032aa46
1 changed files with 4 additions and 5 deletions

View File

@ -661,15 +661,14 @@ class Unpickler:
dispatch[GLOBAL] = load_global dispatch[GLOBAL] = load_global
def find_class(self, module, name): def find_class(self, module, name):
env = {}
try: try:
exec 'from %s import %s' % (module, name) in env __import__(module)
except ImportError: mod = sys.modules[module]
klass = getattr(mod, name)
except (ImportError, KeyError, AttributeError):
raise SystemError, \ raise SystemError, \
"Failed to import class %s from module %s" % \ "Failed to import class %s from module %s" % \
(name, module) (name, module)
klass = env[name]
return klass return klass
def load_reduce(self): def load_reduce(self):