You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

面向对象编程(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:40:33