回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图从<code>sklearn.svm.LinearSVC</code>中创建子类,并注意到签名中的<code>*</code>参数。我不确定这个<code>*</code>是否指**kwargs或*args或其他什么。我正在尝试将init函数子类化,如下所示。在这个场景中,我将在init函数中添加一个额外的参数<code>new_string_in_subclass</code>。
从sklearn.svm导入LinearSVC</p>
<pre><code>class LinearSVCSub(LinearSVC):
def __init__(self, penalty='l2', loss='squared_hinge', *, dual=True, tol=0.0001, C=1.0, multi_class='ovr',
fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None,
max_iter=1000, sampler: new_string_in_subclass=None):
super(LinearSVCSub, self).__init__(penalty=penalty, loss=loss, *, dual=dual, tol=tol,
C=C, multi_class=multi_class, fit_intercept=fit_intercept,
intercept_scaling=intercept_scaling, class_weight=class_weight,
verbose=verbose, random_state=random_state, max_iter=max_iter)
self.new_string_in_subclass = new_string_in_subclass
</code></pre>
<p>如果我想维护<code>LinearSVC</code>类的其他方法的功能,我是否需要将*参数传递给超类的<code>__init__</code>函数?如果是这样,我该怎么做?现在我得到一个<code>SyntaxError</code>如下:</p>
<p>super(LinearSVCSub,self)。<strong>init</strong>(惩罚=惩罚,损失=损失,*,双=双,tol=tol,
^
SyntaxError:无效语法</p>