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

如何通过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))

关键修改说明

  1. 给distance方法添加other参数,设置默认值None,既支持两点间距离计算,也支持点到原点的距离计算
  2. 方法内部通过self.x/self.y访问当前点坐标,通过other.x/other.y访问目标点坐标
  3. 简化了print方法的冗余代码,不影响原有功能

内容的提问来源于stack exchange,提问作者SiBMs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:55:19