summaryrefslogtreecommitdiff
path: root/Lib/copy_reg.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2003-02-13 16:30:16 +0000
committerGuido van Rossum <guido@python.org>2003-02-13 16:30:16 +0000
commit327d9a0b571b3bef39ee3f951b501c75ad02175c (patch)
tree572d9007003edf418abb7dd4c4022f98fb1b1d7e /Lib/copy_reg.py
parent0c584c35f31eaa1a17247b157c52a8d108820976 (diff)
downloadcpython-327d9a0b571b3bef39ee3f951b501c75ad02175c.tar.gz
SF patch #685738 by Michael Stone.
This changes the default __new__ to refuse arguments iff tp_init is the default __init__ implementation -- thus making it a TypeError when you try to pass arguments to a constructor if the class doesn't override at least __init__ or __new__.
Diffstat (limited to 'Lib/copy_reg.py')
-rw-r--r--Lib/copy_reg.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py
index 11ae960611..6dc52c235d 100644
--- a/Lib/copy_reg.py
+++ b/Lib/copy_reg.py
@@ -33,11 +33,14 @@ def pickle_complex(c):
pickle(type(1j), pickle_complex, complex)
-# Support for picking new-style objects
+# Support for pickling new-style objects
def _reconstructor(cls, base, state):
- obj = base.__new__(cls, state)
- base.__init__(obj, state)
+ if base is object:
+ obj = object.__new__(cls)
+ else:
+ obj = base.__new__(cls, state)
+ base.__init__(obj, state)
return obj
_HEAPTYPE = 1<<9