Unexpected keyword argument when using **kwargs in constructor
<p>I'm baffled.  I'm trying to make a subclass that doesn't care about any keyword parameters -- just passes them all along as is to the superclass, and explicitly sets the one parameter that is required for the constructor.  Here's a simplified version of my code: </p>

<pre><code>class BaseClass(object):
    def __init__(self, required, optional=None):
        pass

def SubClass(BaseClass):
    def __init__(self, **kwargs):
        super(SubClass, self).__init__(None, **kwargs)

a = SubClass(optional='foo')  # this throws TypeError!?!??
</code></pre>

<p>This fails with</p>

<pre><code>leo@loki$ python minimal.py
Traceback (most recent call last):
  File "minimal.py", line 9, in &lt;module&gt;
    a = SubClass(optional='foo')
TypeError: SubClass() got an unexpected keyword argument 'optional'
</code></pre>

<p>How can it complain about an unexpected keyword argument when the method has <code>**kwargs</code>?</p>

<p>(Python 2.7.3 on Ubuntu)</p>
