我尝试通过多重继承将自己的方法和属性添加到稀疏矩阵中。但我发现算术运算符在新类中没有关闭。
from scipy.sparse import coo_matrix
import numpy as np
class Info(object):
def __init__(self, *arg, **args):
self.hello = "hello"
def say_hello(self):
print("hello")
class A(coo_matrix, Info):
def __init__(self, *arg, **args):
super(type(self), self).__init__(*arg, **args)
a = A(np.random.randint(2, size=(3,3)))
print("type of a: ",type(a))
a.say_hello()
b = 2*a
print("type of b: ",type(b))
答案 0 :(得分:0)
如scipy.sparse.coo_matrix的文档中所述,它不直接支持算术运算。显然,如果你仍然尝试做算术,它会自动转换为csr_matrix
。这就是您的b
不再是__main__.A
类型的原因。但是,如果您通过执行
csr_matrix
class A(csr_matrix, Info):
...
这有适用于算术的方法,因此可以在不转换为其他格式的情况下工作。