'int'对象没有属性'x'

时间:2016-11-10 15:04:35

标签: python class python-3.x

我正在尝试使用__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' 

1 个答案:

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