面向对象编程(OOP)中两点间距离计算的问题求助
问题分析与修复
你的dist方法出错的原因是:传入的参数point是Points类的实例,不是元组,不能用point[0]、point[1]这种索引方式获取坐标,应该直接访问它的x1和y1属性。
修正后的代码
from math import sqrt class Points: def __init__(self, x1, y1): self.x1 = x1 self.y1 = y1 def show(self): return (self.x1, self.y1) def move(self, x2, y2): self.x1 += x2 self.y1 += y2 def dist(self, point): # 访问传入实例的x1和y1属性,而非用索引 return sqrt(((point.x1 - self.x1) ** 2) + ((point.y1 - self.y1) ** 2)) p1 = Points(2, 3) p2 = Points(3, 3) print(p1.show()) # 输出: (2, 3) print(p2.show()) # 输出: (3, 3) p1.move(10, -10) print(p1.show()) # 输出: (12, -7) print(p2.show()) # 输出: (3, 3) print(p1.dist(p2)) # 输出: 12.727922061357855
补充说明
dist方法接收另一个Points实例作为参数,通过point.x1和point.y1获取该点的坐标值,再代入欧几里得距离公式计算。- 测试代码运行后,最后输出的是点(12,-7)和(3,3)之间的距离,计算结果正确。
内容的提问来源于stack exchange,提问作者user20463912
相关产品推荐
相关产品推荐

