You need to enable JavaScript to run this app. Python运行报错circle() takes 0 positional arguments but 3 were given如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报错circle() takes 0 positional arguments but 3 were given如何解决

错误原因排查
  • 核心语法错误:混淆了Python中类和函数的定义关键字,自定义类需要用class声明,你当前代码用def把circle定义成了无参普通函数,调用时传入3个参数自然触发参数数量不匹配的报错。
  • 逻辑错误:testBelongs方法存在两处问题:1. 访问实例属性a、b、r时没有加self.前缀,运行时会触发变量未定义报错;2. 点是否在圆内的判断逻辑错误,缺少待判断点的入参,距离计算公式也不符合欧氏距离的计算规则。
  • 其他问题:调用面积、周长方法后没有打印输出,运行后无法看到计算结果。
修正后完整代码
class Circle:
    def __init__(self, a, b, r):
        self.a = a  # 圆心x坐标
        self.b = b  # 圆心y坐标
        self.r = r  # 圆半径

    def Area(self):
        return 3.14 * self.r ** 2

    def Perimeter(self):
        return 2 * 3.14 * self.r

    def testBelongs(self, x, y):
        # 计算待判断点到圆心的欧氏距离
        d = ((x - self.a) ** 2 + (y - self.b) ** 2) ** 0.5
        if d < self.r:
            print(f"点({x},{y}) lies inside circle")
        else:
            print(f"点({x},{y}) Lies outside circle")

# 实例化圆:圆心(1,2),半径5
c = Circle(1, 2, 5)
# 输出计算结果
print("圆周长:", c.Perimeter())
print("圆面积:", c.Area())
# 测试点(3,4)是否在圆内
c.testBelongs(3, 4)
修正说明
  • 用class关键字替换原def声明Circle类,支持实例化传参
  • 修正testBelongs方法的逻辑,新增待判断点的x、y入参,调整距离计算公式,所有实例属性访问都添加self.前缀
  • 补充方法返回值的打印逻辑,以及点位置判断的提示信息可读性优化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:39:02