title: Cannot return Subclass instance from Class.__new__()
body: <p>Here is the Python 3 code:</p>
  
  <pre><code>class Class:
    def __new__(cls, value):
      print(__class__, cls, value)
      return Subclass(value+1, value+2)
  
  class Subclass(Class):
    def __new__(cls, value, value2):
      print(__class__, cls, value, value2)
      return object.__new__(Subclass)
    def __init__(self, *args):
      print(args)
      self.value = args
  
  
  acctual_instance = Class(1)
  print('acctual_instance:', acctual_instance.value, type(acctual_instance))
  </code></pre>
  
  <p>The output:</p>
  
  <pre><code>&lt;class '__main__.Class'&gt; &lt;class '__main__.Class'&gt; 1
  &lt;class '__main__.Subclass'&gt; &lt;class '__main__.Subclass'&gt; 2 3
  (2, 3)
  (1,)
  acctual_instance: (1,) &lt;class '__main__.Subclass'&gt;
  </code></pre>
  
  <p>Even though we returned <code>Subclass(2,3)</code> instance from <code>Class.__new__(1)</code>, the <code>acctual_instance.value</code> is <code>Class</code>' argument 1, not (2,3). Is this the expected behaviour? Why is <code>Subclass.__init__()</code> called the second time? How can I return <code>Subclass(2,3)</code> instance from <code>Class.__new__(1)</code>?</p>
  
  <p>UPDATE:
  If <code>Class</code> is removed from class <code>Subclass(Class)</code> then the output is:</p>
  
  <pre><code>&lt;class '__main__.Class'&gt; &lt;class '__main__.Class'&gt; 1
  &lt;class '__main__.Subclass'&gt; &lt;class '__main__.Subclass'&gt; 2 3
  (2, 3)
  acctual_instance: (2, 3) &lt;class '__main__.Subclass'&gt;
  </code></pre>