<p>您的问题是,您只尝试在子类中使用<code>super</code>。</p>
<p>如果在基类中也使用<code>super</code>,那么这将起作用。每个构造函数将“吃掉”它所接受的关键字参数,而不是将它们传递给下一个构造函数。当调用<code>object</code>的构造函数时,如果有任何关键字参数遗留在它上面,它将引发异常。</p>
<pre><code>class FirstBase(object):
def __init__(self, detail_text=None, backed_object=None,
window=None, droppable_zone_obj=None,
bound_zone_obj=None, on_drag_opacity=None, **kwargs):
super(FirstBase, self).__init__(**kwargs)
class SecondBase(object):
def __init__(self, size=(0,0), texture=None, desc="",
backed_object=None, window=None, **kwargs):
super(SecondBase, self).__init__(**kwargs)
class Child(FirstBase, SecondBase):
def __init__(self, **kwargs):
super(Child, self).__init__(**kwargs)
</code></pre>
<p>如您所见,它可以工作,除非您传递一个虚假的关键字参数:</p>
<pre><code>>>> Child()
<__main__.Child object at 0x7f4aef413bd0>
>>> Child(detail_text="abc")
<__main__.Child object at 0x7f4aef413cd0>
>>> Child(bogus_kw=123)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.py", line 14, in __init__
super(Child, self).__init__(**kwargs)
File "test.py", line 5, in __init__
super(FirstBase, self).__init__(**kwargs)
File "test.py", line 10, in __init__
super(SecondBase, self).__init__(**kwargs)
TypeError: object.__init__() takes no parameters
</code></pre>