擅长:python、mysql、java
<p>您可能对继承的类初始化有问题。您试图传递继承的类初始化无法处理的参数。当继承的类<code>__init__</code>不接受<code>*args</code>,和/或{<cd3>},并且您试图传递一个未在继承类<code>__init__</code>参数中定义的参数时,通常会发生这种情况</p>
<p>让我们有两个类,一个继承另一个</p>
<pre><code>class A:
def __init__(self, x, y=None):
pass
class B(A):
def __init__(self, *args, **kwargs):
page_num = kwargs.get('page_num')
A.__init__(self, *args, **kwargs)
something = B(x=1, page_num=2)
</code></pre>
<p>当我们创建一个实例<code>something</code>时,它将调用<code>B.__init__</code>。由于<code>B</code>接受位置参数和命名参数,所以这里没有问题。然后它将调用<code>A.__init__</code>,并传递参数<code>x=1, page_num=2</code>。<code>A.__init__</code>有参数<code>x</code>,但既没有任何位置参数,也没有任何命名参数来处理<code>page_num</code>。所以这就产生了一个错误。在</p>
<p>如果继承的类只接受<em>预定义的</em>参数,则必须从带有<code>kwargs.pop</code>和{<cd16>}的通配符参数(<code>*args</code>和{<cd3>})中删除未定义的参数,或者使用<code>kwargs.get</code>或<code>args[<index>]</code>从中获取相关参数并将其传递给继承的<code>__init__</code></p>