Python新手求助:NameError: name 'distancepoint' is not defined 错误修复
修复NameError及代码逻辑问题
你的代码有两个核心问题导致错误:
- 错误调用实例方法:
distancepoint是point类的实例方法,不能直接当作全局函数调用,必须通过类的实例来调用。 - 类的设计逻辑错误:你的
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
相关产品推荐
相关产品推荐

