2024-10-05 12:24:20 发布
网友
我正在尝试向pysparse库中的矩阵类型添加一些额外的方法。除此之外,我希望新类的行为与原始类完全相同,所以我选择使用继承实现更改。但是,当我试着
from pysparse import spmatrix class ll_mat(spmatrix.ll_mat): pass
这将导致以下错误
这是什么导致了这个错误?有没有一种方法可以使用委托,使我的新类的行为与原始类完全相同?在
ll_mat被记录为function,而不是类型本身。这个习惯用法被称为“工厂函数”,它允许“creator callable”根据参数返回不同的实际底层类型。在
ll_mat
您可以尝试从此对象生成对象,然后从该对象的类型继承:
x = spmatrix.ll_mat(10, 10) class ll_mat(type(x)): ...
但是,请注意,对于一个内置类型来说,声明它不支持被子类化是非常可行的(这甚至可以为了节省一些开销而这样做);如果这个类型就是这样做的,那么您就不能对它进行子类化,而是必须使用包含和委托,即:
等等
ll_mat
被记录为function,而不是类型本身。这个习惯用法被称为“工厂函数”,它允许“creator callable”根据参数返回不同的实际底层类型。在您可以尝试从此对象生成对象,然后从该对象的类型继承:
但是,请注意,对于一个内置类型来说,声明它不支持被子类化是非常可行的(这甚至可以为了节省一些开销而这样做);如果这个类型就是这样做的,那么您就不能对它进行子类化,而是必须使用包含和委托,即:
^{pr2}$等等
相关问题 更多 >
编程相关推荐