【发布时间】:2020-09-12 11:06:50
【问题描述】:
所以我最近了解了 python 中的运算符重载,并尝试在我正在处理的项目中使用它。贝娄,我试图重现我遇到的问题。
class Ship:
def __init__(self, pos):
self.pos = pos
self.center = [18, 30]
self.leftNozzlePos = [6, 10]
self.rightNozzlePos = [30, 10]
self.mainNozzlePos = [18, 60]
def __add__(p1, p2):
x = p1[0] + p2[0]
y = p1[1] + p2[1]
return [x, y]
def updateRelativePositions(self):
self.center = self.pos + self.center
self.leftNozzlePos = self.pos + self.leftNozzlePos
self.rightNozzlePos = self.pos + self.rightNozzlePos
self.leftNozzlePos = self.pos + self.mainNozzlePos
ship = Ship([600, 300])
ship.updateRelativePositions()
print(ship.mainNozzlePos)
所以我有一堆位置值作为[x, y] 存储在列表中。我试图重载__add__ 运算符,使其返回[p1[0]+p2[0], p1[1]+p2[1]],p1 和p1 是两个不同的列表持有位置。正如您在函数updateRelativePositions 中看到的那样,我尝试添加一些位置值,结果很奇怪。对于leftNozzlePos 和rightNozzlePos,它会打印一个包含4 个项目的列表,而对于mainNozzlePos,它会返回完全不变的值。为什么会发生这种情况,我该如何解决?感谢您的帮助
【问题讨论】:
-
` def __add__(p1, p2):` --> ` def __add__(self,other):`
标签: python python-3.x add