2011-01-11 10 views
2

Vector2クラスを作成しようとしています。私はPython TypeError:*: 'Vector2'と 'int'に対応していないオペランドタイプ

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)) 

答えて

4

それは__mul__なく__mull__はありませんか? __mull____mul__に置き換えて、もう一度お試しください。

関連する問題