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

Python类中变量正确使用及Circle类inside_circle方法故障排查

类中变量的正确使用及Circle类修复方案

你的代码存在以下核心问题,导致Circle类功能失效:

  • 实例方法未声明self参数:Python中类的实例方法必须以self作为第一个参数,通过它才能访问实例的属性(比如Circle的center和radius)。原代码直接使用center和radius,Python会识别为未定义的全局变量,触发NameError。
  • 参数逻辑混淆:inside_circle方法的参数应该是待判断的Point对象,而非命名错误的input_circle;同时调用distance函数时,应该传入圆的中心(self.center)和待判断的点,而非搞反参数。
  • 缺少依赖模块导入:sqrt函数属于math模块,未导入会触发NameError。
  • 类型提示错误:distance函数中,euclidean_distance是浮点型结果,不能标注为int;参数也需要明确标注为Point类型。

修复后的完整代码:

import math

class Point():
    """ Represents a point in 2D coordinates. 
    """
    def __init__(self, x: int | float, y: int | float):
        self.x = x
        self.y = y

def distance(point_1: Point, point_2: Point) -> float:
    """ 
    计算两点间的欧氏距离并返回结果
    :param point_1: 二维空间中的一个点
    :param point_2: 二维空间中的一个点
    """
    distance_x = point_1.x - point_2.x
    distance_y = point_1.y - point_2.y
    euclidean_distance = math.sqrt((distance_x ** 2) + (distance_y ** 2))
    return euclidean_distance

class Circle:
    def __init__(self, center: Point, radius: int | float) -> None:
        self.center = center
        self.radius = radius

    def inside_circle(self, point: Point) -> bool:
        # 计算点到圆心的距离,小于等于半径则在圆内
        if distance(self.center, point) > self.radius:
            return False
        else:
            return True

# 测试代码
center = Point(2,3)
circle = Circle(center, 2)
point = Point(1,5)
print(circle.inside_circle(point))  # 输出False,该点在圆外

关键修复说明:

  1. 给Circle的inside_circle方法添加self参数,通过self.center和self.radius访问实例属性。
  2. 修正inside_circle的参数为point,并正确调用distance(self.center, point)。
  3. 导入math模块,使用math.sqrt计算平方根。
  4. 补充正确的类型提示,明确参数和返回值的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:01:41