title: Why does object.__new__ with arguments work fine in Python 2.x and not in Python 3.3+?
body: <p>Why does the following code work fine in Python 2.x and not in Python 3.3+:</p>
  
  <pre><code>class TestA(object):
      def __new__(cls, e):
          return super(TestA, cls).__new__(TestB, e)
  
  class TestB(TestA):
      def __init__(self, e):
          print(self, e)
  
  TestA(1)
  </code></pre>
  
  <p>Python 2.7.6 output:</p>
  
  <pre><code>(&lt;__main__.TestB object at 0x7f6303378ad0&gt;, 1)
  </code></pre>
  
  <p>Python 3.1.5 output:</p>
  
  <pre><code>__main__:3: DeprecationWarning: object.__new__() takes no parameters
  &lt;__main__.TestB object at 0x7f2f69db8f10&gt; 1
  </code></pre>
  
  <p>Python 3.2.3 and 3.2.5 output:</p>
  
  <pre><code>&lt;__main__.TestB object at 0xcda690&gt; 1
  </code></pre>
  
  <p>Python 3.3.5 and 3.4.1 output:</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in __new__
  TypeError: object() takes no parameters
  </code></pre>