_reconstructor(): there's no need for tricks with assignment to
__class__.  The __new__ protocol is up to this.  (Thanks to Tim for
pointing this out.)
diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py
index e93c2a3..eb02864 100644
--- a/Lib/copy_reg.py
+++ b/Lib/copy_reg.py
@@ -36,16 +36,9 @@
 
 # Support for picking new-style objects
 
-_dummy_classes = {}
-
 def _reconstructor(cls, base, state):
-    dummy = _dummy_classes.get(base)
-    if dummy is None:
-        class dummy(base): pass
-        _dummy_classes[base] = dummy
-    obj = dummy(state)
-    obj._foo = 1; del obj._foo # hack to create __dict__
-    obj.__class__ = cls
+    obj = base.__new__(cls, state)
+    base.__init__(obj, state)
     return obj
 _reconstructor.__safe_for_unpickling__ = 1