如何通过Python类获取实例值并实现两点间距离计算?
问题解决:Point类的distance方法修正
你的代码核心问题出在distance方法的定义与调用逻辑上,以下是具体修正方案:
问题分析
distance方法未接收另一个Point实例作为参数,无法获取目标点的坐标值- 方法内部直接使用未定义的
x1、x2等变量,需通过实例属性访问坐标 - 调用
p1.distance()时未传入目标点,不符合两点距离的计算逻辑
修正后的代码
import math class Point: def __init__(self, x, y): self.x = x self.y = y def print(self): print((self.x, self.y)) return self def reflect_x(self): self.y *= -1 return self def distance(self, other=None): # 未传入目标点时,默认计算到原点(0,0)的距离 if other is None: other = Point(0, 0) # 通过self(当前点)和other(目标点)的属性获取坐标计算距离 dist = math.sqrt((other.x - self.x)**2 + (other.y - self.y)**2) return dist p1 = Point(1,4) p2 = Point(-3,5) p3 = Point(-3,-5) # 计算p1到原点的距离 print(p1.distance()) # 计算p2到p3的距离 print(p2.distance(p3)) # 计算p3到p2的距离(结果与上一行一致) print(p3.distance(p2))
关键修改说明
- 给
distance方法添加other参数,设置默认值None,既支持两点间距离计算,也支持点到原点的距离计算 - 方法内部通过
self.x/self.y访问当前点坐标,通过other.x/other.y访问目标点坐标 - 简化了
print方法的冗余代码,不影响原有功能
内容的提问来源于stack exchange,提问作者SiBMs
相关产品推荐
相关产品推荐

