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__.
diff --git a/Misc/NEWS b/Misc/NEWS
index cfcb7ac..dc6f1db 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,12 @@
 Core and builtins
 -----------------
 
+- If a new-style class defines neither __new__ nor __init__, its
+  constructor would ignore all arguments.  This is changed now: the
+  constructor refuses arguments in this case.  This might break code
+  that worked under Python 2.2.  The simplest fix is to add a no-op
+  __init__: "def __init__(self, *args, **kw): pass".
+
 - Through a bytecode optimizer bug (and I bet you didn't even know
   Python *had* a bytecode optimizer :-), "unsigned" hex/oct constants
   with a leading minus sign would come out with the wrong sign.