diff options
author | Guido van Rossum <guido@python.org> | 2003-02-13 16:30:16 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-02-13 16:30:16 +0000 |
commit | 327d9a0b571b3bef39ee3f951b501c75ad02175c (patch) | |
tree | 572d9007003edf418abb7dd4c4022f98fb1b1d7e /Lib/copy_reg.py | |
parent | 0c584c35f31eaa1a17247b157c52a8d108820976 (diff) | |
download | cpython-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.py | 9 |
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 |