我想继承从mlpy机器学习包导出的LibSvm对象类:
from mlpy import MaximumLikelihoodC, LibSvm
class Svm(LibSvm):
def __init__(self,Gs,ls):
self._K = ls.shape[1]
self._Gs = Gs
self._N = Gs.shape[1]
self._ls = ls
LibSvm.__init__('c_svc','rbf',\
gamma=1.0/self._N,C=100,probability=True)
当我调用构造函数时,例如,
svm = Svm(Gs,ls)
解释程序忽略我的 init 并执行LibSvm的 init 方法,给出错误
svm = SVM(Gs,ls)
File "libsvm.pyx", line 146, in mlpy.libsvm.LibSvm.__cinit__ mlpy/libsvm/libsvm.c:1803)
ValueError: invalid svm_type
使用相同的语法对MaximumLikelihoodC进行子类化没有问题。
答案 0 :(得分:1)
在C中实现的Python类不能被子类化,除非它们是专门为它设计的,请参阅Which classes cannot be subclassed?。
通过错误消息的外观,似乎很确定它是用C实现的,我希望作者没有投入额外的工作来使它成为可子类化的。