title: Error on using super: __init__() takes exactly 1 argument
body: <p>Can anyone explain why I am getting <code>__init__()</code> takes exactly 1 argument error with the below code</p>
  
  <pre><code>class ABC(object):
      def __init__(self, **kwargs):
          self.x=20
          super(ABC, self).__init__(self, **kwargs)
  
  class DEF(object):
       def __init__(self, **kwargs):
          self.y=30
          super(DEF, self).__init__(self, **kwargs)
  
  class XYZ(ABC,DEF):
       def __init__(self, **kwargs):
          super(XYZ, self).__init__(self, **kwargs)
  
  &gt;&gt;&gt; x=XYZ()
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/home/user/test.py", line 13, in __init__
      super(XYZ, self).__init__(self, **kwargs)
  TypeError: __init__() takes exactly 1 argument (2 given)
  
  &gt;&gt;&gt; x=XYZ(a=1)
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/home/hprem/junk", line 13, in __init__
      super(XYZ, self).__init__(self, **kwargs)
  TypeError: __init__() takes exactly 1 argument (3 given)
  </code></pre>