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

Python新手求助:NameError: name 'distancepoint' is not defined 错误修复

修复NameError及代码逻辑问题

你的代码有两个核心问题导致错误:

  1. 错误调用实例方法:distancepoint是point类的实例方法,不能直接当作全局函数调用,必须通过类的实例来调用。
  2. 类的设计逻辑错误:你的point类被设计成存储两个点,但实际你需要的是每个point实例代表一个单独的坐标点,这样才能计算两个实例之间的距离。

修正后的代码

import math

# Python类名遵循大驼峰命名惯例
class Point:
    # 初始化方法,每个实例存储单个点的x、y坐标
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    # 方法:计算当前点到另一个点的距离
    def distance_to(self, other_point):
        return math.sqrt((self.x - other_point.x)**2 + (self.y - other_point.y)**2)

# 创建两个独立的点实例
p1 = Point(2, 4)
p2 = Point(1, 6)

# 通过p1实例调用方法,传入p2计算距离
distance = p1.distance_to(p2)
print(f'Distance between 2 points: {distance}')

错误细节解释

  • 原代码中,你创建p1 = point(2,4)时,__init__会把2赋值给self.p1,4赋值给self.p2,后续x1,y1 = self.p1会尝试把整数2解包成两个值;即使没触发这个错误,直接调用distancepoint(p1,p2)也会因为该方法不是全局函数而抛出NameError。
  • 修正后,每个Point实例只存储自身的坐标,distance_to方法接收另一个点实例,通过两个实例的x、y属性计算距离,符合面向对象的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:42:47