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

为何Python中Line类的x2,y2未定义而x1,y1已定义?

问题解答

错误原因

你写的distance方法里的for循环语法完全不符合Python规范:

for x1,y1 in self.coor1, x2,y2 in self.coor2:

这种写法是非法的,Python不会将x2,y2 in self.coor2当作循环的一部分执行,导致x2和y2从未被定义,自然会抛出未定义错误。另外,self.coor1本身是单个二元元组(比如(3,2)),用for循环迭代它会逐个取出元素(先取3时y1还会因拆包失败报错),当前场景完全没必要用循环。

修正方案

直接对两个坐标元组做拆包操作即可:

class Line():
    def __init__(self, coor1, coor2):
        self.coor1 = coor1
        self.coor2 = coor2
    
    def distance(self):
        # 直接拆包两个坐标元组
        x1, y1 = self.coor1
        x2, y2 = self.coor2
        # 计算欧几里得距离
        return ((x2 - x1)**2 + (y2 - y1)**2)**0.5

调用部分保持不变:

coordinate1 = (3,2)
coordinate2 = (8,10)

li = Line(coordinate1, coordinate2)
print(li.distance())  # 输出结果:9.433981132056603

额外说明

如果需要处理多组坐标对才需要用到循环,但当前每个Line实例只对应一对坐标,直接拆包是最简洁高效的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:57:42