擅长:python、mysql、java
<p><code>Top</code>已经知道如何处理<code>optional=None</code>;只需按原样传递参数即可。但是,请记住,每个类都必须准备好接收和传递未知参数,以防您没有定义的类继承了这些参数中的任何一个,并将其<em>自己的</em>参数添加到<code>__init__</code>。(考虑一个从<code>Top</code>和其他一些类<code>Foo</code>继承的类<code>X</code>,并且<code>Foo</code>期望一个关键字参数<code>bar</code>:<code>X(1, 2, 3, bar=5)</code>最终将调用<code>Top.__init__</code>,而<code>bar</code>尚未被删除。将<code>__init__</code>与<code>super</code>一起使用时,关键字参数是一个非常好的主意。)</p>
<pre><code>class Top:
def __init__(self, optional=None, **kwargs):
super().__init__(**kwargs)
if optional is not None:
self.optional = optional
class Middle(Top):
def __init__(self, one, optional=None, **kwargs):
super().__init__(optional, **kwargs)
self.one = one
class Bottom(Middle):
def __init__(self, one, two, optional=None, **kwargs):
super().__init__(one, optional, **kwargs)
self.two = two
</code></pre>