当我试图解决我正在学习的某些课程中的问题时,我最终面临着一些我不知道如何克服的问题。
我需要在一个Class中编写一个方法,它代表一个矩阵,这个方法是vector_matrix乘法,现在老师给我们提供了一个代表Class的代码,它包含了类的定义,我们的职责是完成一些程序(方法)。
我以它的名字工作的代码是vector_matrix_mul(v, M) 其中v是一个向量,M是一个矩阵这个方法将在我们正在设计的Class Mat中,现在我写了一个代码,它在我的电脑上运行良好,但问题是这样的。
Class Mat 有以下方法。
def __rmul__(self, other):
if Vec == type(other):
return vector_matrix_mul(other, self)
else: # Assume scalar
return scalar_mul(self, other)
这里 Vec 是向量的一个类,现在为了让我的方法 vector_matrix_mul(other, self) 在它必须为 True 之前执行条件,但我得到它 False 所以程序运行到 else: 部分和执行其他程序。
我试图替换条件 contains type() 所以上面的代码如下:
def __rmul__(self, other):
if isinstance(other, Vec):
return vector_matrix_mul(other, self)
else: # Assume scalar
return scalar_mul(self, other)
并且代码正在运行,所以现在我不知道如何避免这个问题,在测试我的程序时 if Vec == type(other): 为 Vec 类的所有实例提供 False ,有没有办法得到 if Vec == type(other): 的结果类似于 if isinstance(other, Vec): ??
或者如果 Vec == type(other): 给出 True 的任何建议。
注意:我使用的是 Python 3.2.3,而评分者使用的是 Python 3.3.2
谢谢。