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

Python新手面向对象编程疑问:Line类距离与斜率实现问题

Line类实现问题排查与修正

你使用索引读取坐标的思路本身是可行的,但当前代码存在核心错误,具体问题和修正方案如下:

  • 核心运行错误:实例方法中访问实例属性必须加self前缀,你当前的distance和slope方法直接使用coord1、coord2,Python会将其识别为未定义的局部变量,调用方法时会直接抛出NameError。
  • 边界逻辑缺失:计算斜率时如果两点x坐标相等,会触发除以零的报错,对应竖直线斜率不存在的场景,建议增加判断逻辑避免报错。
  • 可读性优化:索引取值逻辑本身没有问题,只要保证传入的coord1、coord2是长度为2的存储x、y坐标的序列(列表、元组均可)即可,提前拆分坐标变量可以大幅提升代码可读性。

修正后的可运行代码如下:

class Line():
    def __init__(self, coord1, coord2):
        self.coord1 = coord1
        self.coord2 = coord2

    def distance(self):
        x1, y1 = self.coord1
        x2, y2 = self.coord2
        return ((x2 - x1)**2 + (y2 - y1)**2)**0.5

    def slope(self):
        x1, y1 = self.coord1
        x2, y2 = self.coord2
        if x2 == x1:
            raise ValueError("两点x坐标相同,直线为竖直线,斜率不存在")
        return (y2 - y1) / (x2 - x1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:04