我正在尝试使用__add __
创建一个添加向量的程序:
class vects:
def __init__(self,x,y):
self.x = x
self.y = y
def __add__(self, vect):
total_x = self.x + vect.x
total_y = self.y + vect.y
return vects(total_x, total_y)
plusv1 = vects.__add__(2,5)
plusv2 = vects.__add__(1,7)
totalplus = plusv1 + plusv2
产生的错误如下:
line 12, in <module> plusv1 = vects.__add__(2,5)
line 7, in __add__ total_x = self.x + vect.x
AttributeError: 'int' object has no attribute 'x'
答案 0 :(得分:2)
你没有那样使用__add__
!当在__add__
类的实例上使用+
时,将会隐式调用:-) Vects
。
所以,你应该首先做的是初始化两个矢量实例:
v1 = Vects(2, 5)
v2 = Vects(1, 7)
然后添加它们:
totalplus = v1 + v2
如果您添加一个漂亮的__str__
来获得新向量的良好表示:
class Vects:
def __init__(self,x,y):
self.x = x
self.y = y
def __add__(self, vect):
total_x = self.x + vect.x
total_y = self.y + vect.y
return Vects(total_x, total_y)
def __str__(self):
return "Vector({}, {})".format(self.x, self.y)
您可以通过打印来获取totalplus
的视图:
print(totalplus)
Vector(3, 12)