/:' Vector3'不支持的操作数类型和' int'

时间:2018-02-11 17:54:41

标签: python operator-overloading typeerror

我创建了一个类并定义了所有操作数,但由于某种原因它不能运行该函数。这是错误操作数的相关代码。添加,减去和乘法工作查找,并以相同的方式编写。

class Vector3(object):

    def __init__(self, x=0, y=0, z=0):
        self.x = x
        self.y = y
        self.z = z
    #... among other operants
    def __truediv__(self, rhs):
        if isinstance(rhs, self.__class__):
            return Vector3(x=self.x / rhs.x,
                           y=self.y / rhs.y,
                           z=self.z / rhs.z)
        elif isinstance(rhs, (int, float, long)):
            return Vector3(x=self.x / rhs,
                           y=self.y / rhs,
                           z=self.z / rhs)
    def __ne__(self, rhs):
    return (self.x != rhs.x or
            self.y != rhs.y or
            self.z != rhs.z)

unit_vec = Vector3(1, 1, 1)
if (unit_vec / 1) != (unit_vec / unit_vec):
    print("Fail -5")
    return

我刚试了两个Vector3,我得到了同样的错误。

0 个答案:

没有答案