所以我有一个学校项目,我们需要为GPS系统制作一些课程。我有一个问题找出函数dist(self,other):显示在我的代码底部。项目后期的其他定义很大程度上依赖于它,但我现在很难过。 dist函数计算由实例变量 x 和 y 定义的位置的曼哈顿距离(x1-x2)+(y1-y2),以及另一个位置其他,作为元组提供
class GPS_Location:
def __init__(self,x,y):
self.x=x
self.y=y
def __str__(self):
return '(%s,%s)' % (self.x,self.y)
def __repr__(self):
return 'GPS_Location(%s,%s)' % (self.x,self.y)
def __eq__(self,other):
self.other = other
if (self.x,self.y) == other:
return True
else:
return False
def dist(self,other):
self.other = other
return abs(self.x - (other[0])) + abs(self.y - (other[1])) #TypeError
在测试代码时,我不断收到“TypeError:'GPS_Location'对象不可迭代”。我已经尝试了很多调整,但我无法弄清楚我做错了什么。
非常感谢任何帮助!
答案 0 :(得分:0)
other
和self.other
中将__eq__()
分配给dist()
。您可能遇到的唯一其他问题可能与您调用这些方法的方式有关(您提到参数other
只是一个元组),这有效:
x = GPS_Location(1, 1)
x == (1, 1)
# True
x == (2, 2)
# False
x.dist((1, 1))
# 0
x.dist((2, 2))
# 2
如果您确实需要将GPS_Location
作为other
参数传递给dist
,则需要按如下方式更新:
def dist(self, other):
return abs(self.x - other.x) + abs(self.y - other.y)
这样称呼:
x = GPS_Location(1, 1)
y = GPS_Location(2, 2)
x.dist(y)
# 2