]> granicus.if.org Git - python/commitdiff
Don't use "exec" in find_class(). It's slow, unnecessary, and (as AMK
authorGuido van Rossum <guido@python.org>
Thu, 25 Mar 1999 21:58:59 +0000 (21:58 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 25 Mar 1999 21:58:59 +0000 (21:58 +0000)
points out) it doesn't work in JPython Applets.

Lib/pickle.py

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