0

我正在尝试在 python 中实现一些数学结构。一个基类将继承许多其他基类是矩阵类。对于这个类,实现了一个乘法:

def __mul__(self, other):

    if isinstance(other,matrix):
        if not self._type._ncols == other._type._nrows:
            raise ValueError('Cannot multiply matrix of type "{0}" with matrix of type "{1}"'.format(self._type, other._type))
        arr=[[sum([val1*val2 for val1,val2 in zip(row,col)]) for col in other.columns()] for row in self._array]
        self._type=matrix_type(array=arr)
        self._array=arr
        return self
    else:
        arr = [[val*other for val in row] for row in self._array ]
        self._type=matrix_type(array=arr)
        self._array=arr
        return self

这很好用,但是如果我将继承自矩阵类的类(名称为“旋量”)的两个实例相乘,则结果是矩阵类的实例,而不是派生旋量类的实例。这是一个问题,因为 spinor 类具有一些我在乘法后需要的附加功能。

有没有办法实现乘法,返回类型反映派生类的类型?

谢谢!

4

0 回答 0