Use __reduce_ex__ in copy.py.  The test_*copy_cant() tests are simpler again.
diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py
index fa4ce72..fcef409 100644
--- a/Lib/copy_reg.py
+++ b/Lib/copy_reg.py
@@ -113,9 +113,14 @@
 
 def _reduce_ex(obj, proto=0):
     obj_reduce = getattr(obj, "__reduce__", None)
-    if obj_reduce and obj.__class__.__reduce__ is not object.__reduce__:
-        return obj_reduce()
-    elif proto < 2:
+    # XXX This fails in test_copy.py line 61
+    if obj_reduce:
+        try:
+            if obj.__class__.__reduce__ is not object.__reduce__:
+                return obj_reduce()
+        except AttributeError:
+            pass
+    if proto < 2:
         return _reduce(obj)
     else:
         return _better_reduce(obj)