我对python编程很陌生。我正在做关于从这里(滚动到操作符重载)的重载操作符的教程。我不太明白这段代码。我希望有人能详细解释这一点。准确地说,我不明白这里是如何添加两个对象的,以及这些行是什么
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b) 在这里做什么?
#!/usr/bin/python
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2这就产生了一个输出矢量(7,8)。这里是如何添加对象v1和v2的?
发布于 2017-03-24 18:27:40
v1 + v2与self == v1和other == v2一起被视为对v1.__add__(v2)的调用。
发布于 2017-03-24 18:29:10
这是Python模型,这里回答了您的问题
基本上,当执行v1 + v2时,python在内部执行v1.__add__(v2)。
发布于 2017-03-24 18:30:35
这个代码是在执行向量加法,就像在纸上添加两个向量一样,它使用标量加法组合了相应的组件。您正在重写__add__方法,以告诉解释器如何为您的类执行加法。
守则:
self.a + other.a组合向量类的一个组件。守则:
self.b + other.b使用对b类型适当的加法函数组合向量类的b组件。
这些新的组件值被传递给Vector的构造函数,以返回一个新的Vector。
+操作符将调用类上的__add__方法来执行加法。
https://stackoverflow.com/questions/43006674
复制相似问题