Python:无法从C扩展继承

Python:无法从C扩展继承,python,inheritance,Python,Inheritance,我正在尝试向pysparse库中的矩阵类型添加一些额外的方法。除此之外,我希望新类的行为与原始类完全相同,因此我选择使用继承实现更改。然而,当我尝试 from pysparse import spmatrix class ll_mat(spmatrix.ll_mat): pass 这将导致以下错误 TypeError: Error when calling the metaclass bases cannot create 'builtin_function_or_metho

我正在尝试向pysparse库中的矩阵类型添加一些额外的方法。除此之外,我希望新类的行为与原始类完全相同,因此我选择使用继承实现更改。然而,当我尝试

from pysparse import spmatrix

class ll_mat(spmatrix.ll_mat):
    pass
这将导致以下错误

TypeError: Error when calling the metaclass bases
    cannot create 'builtin_function_or_method' instances

这是什么导致了这个错误?有没有一种方法可以使用委托,使我的新类的行为与原始类完全相同?

ll\u mat
被记录为一个--而不是类型本身。这个习惯用法被称为“工厂函数”——它允许“创建者可调用”根据其参数返回不同的实际底层类型

您可以尝试从此对象生成对象,然后从该对象的类型继承:

x = spmatrix.ll_mat(10, 10)
class ll_mat(type(x)): ...
但是,请注意,对于内置类型来说,声明它不支持子类化是非常可行的(即使只是为了节省一些开销,也可以这样做);如果该类型就是这样做的,那么您不能将其子类化,而必须使用包含和委派,即:

class ll_mat(object):
    def __init__(self, *a, **k):
        self.m = spmatrix.ll_mat(*a, **k)
        ...
    def __getattr__(self, n):
        return getattr(self.m, n)
等等等等