title: TypeError in Python single inheritance with "super" attribute
body: <p>I never expected the inheritance of Python <strong>2.7</strong> is so anti-human. Why the following code give me a TypeError?</p>
  
  <pre><code>&gt;&gt;&gt; class P:
  ...     def __init__(self, argp):
  ...         self.pstr=argp
  ... 
  &gt;&gt;&gt; class C(P):
  ...     def __init__(self, argp, argc):
  ...         super.__init__(self,argp)
  ...         self.cstr=argc
  ... 
  &gt;&gt;&gt; x=C("parent","child")
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in __init__
  TypeError: descriptor '__init__' requires a 'super' object but received a 'instance'
  </code></pre>
  
  <p>Then I changed to these 2, still vague errors:</p>
  
  <pre><code>&gt;&gt;&gt; class C(P):
  ...     def __init__(self, argp, argc):
  ...         super().__init__(self,argp)
  ...         self.cstr=argc
  ... 
  &gt;&gt;&gt; x=C("parent", "child")
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in __init__
  TypeError: super() takes at least 1 argument (0 given)
  
  
  &gt;&gt;&gt; class C(P):
  ...     def __init__(self, argp, argc):
  ...         super(P).__init__(self,argp)
  ...         self.cstr=argc
  ... 
  &gt;&gt;&gt; x=C("parent", "child")
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in __init__
  TypeError: must be type, not classobj
  </code></pre>
  
  <h1>--------ADD--------</h1>
  
  <p>It still doesn't work as below.</p>
  
  <pre><code>&gt;&gt;&gt; class P:
  ...     def __init__(self, argp):
  ...         self.pstr=argp
  ... 
  &gt;&gt;&gt; class C(P):
  ...     def __init__(self, arg1, arg2):
  ...         super(C, self).__init__(arg1)
  ...         self.cstr=arg2
  ... 
  &gt;&gt;&gt; z=C("PPP", "CCC")
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in __init__
  TypeError: must be type, not classobj
  </code></pre>
  
  <h1>---------ADD2----------</h1>
  
  <p>It seems all the 2 below code snippets work, what's the difference? And btw, when should I use the <em>new style class</em> or the <em>old style class</em>?</p>
  
  <pre><code>&gt;&gt;&gt; class C(P):
  ...     def __init__(self, argp, argc):
  ...         super(C,self).__init__(argp)   #&lt;------ C and self
  ...         self.cstr=argc
  ... 
  &gt;&gt;&gt; class C(P):
  ...     def __init__(self, argp, argc):
  ...         super(P,C).__init__(argp)  #&lt;----- P and C
  ...         self.cstr=argc
  </code></pre>