繁体   English   中英

Python TypeError:*:'Vector2'和'int'不支持的操作数类型

[英]Python TypeError: unsupported operand type(s) for *: 'Vector2' and 'int'

我正在尝试创建一个Vector2类。 当我尝试输入

vec1 = Vector2()
vec2 = vec1 * 5

它给了我错误:

TypeError: unsupported operand type(s) for *: 'Vector2' and 'int'

我的运算符重载有问题吗?

class Vector2(object):

def __init__(self, x = 0.0, y = 0.0):
    self.X = x
    self.Y = y

def __add__(self, other):
    if isinstance(other, Vector2):
        new_vec = Vector2()
        new_vec.X = self.X + other.X
        new_vec.Y = self.X + other.Y
        return new_vec
    else:
        raise TypeError("value must be a vector.")

def __radd__(self, other):
    return self.__add__(other)

def __sub__(self, other):
    new_vec = Vector2()
    new_vec.X = self.X - other.X
    new_vec.Y = self.Y - other.Y

def __mull__(self, value):
    new_vec = Vector2()
    new_vec.X = self.X * value
    new_vec.Y = self.Y * value
    return new_vec

def __rmull__(self, value):
    return self.__mull__(value)

def __div__(self, value):
    new_vec = Vector2()
    new_vec.X = self.X / value
    new_vec.Y = self.Y / value
    return new_vec

def dot(vector1, vector2):
    return ((vector1.X * vector2.X) + (vector1.Y + vector2.Y))

不是__mul__而不是__mull__吗? 更换你__mull____mul__ ,然后再试一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM