Python:无法从C扩展继承

2024-10-05 12:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

from pysparse import spmatrix

class ll_mat(spmatrix.ll_mat):
    pass

这将导致以下错误

^{pr2}$

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


Tags: 方法fromimport类型错误矩阵passclass
1条回答
网友
1楼 · 发布于 2024-10-05 12:24:20

ll_mat被记录为function,而不是类型本身。这个习惯用法被称为“工厂函数”,它允许“creator callable”根据参数返回不同的实际底层类型。在

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

x = spmatrix.ll_mat(10, 10)
class ll_mat(type(x)): ...

但是,请注意,对于一个内置类型来说,声明它不支持被子类化是非常可行的(这甚至可以为了节省一些开销而这样做);如果这个类型就是这样做的,那么您就不能对它进行子类化,而是必须使用包含和委托,即:

^{pr2}$

等等

相关问题 更多 >

    热门问题