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

如何修复实例化RangePrime类时出现TypeError: takes no arguments报错

问题原因及解决方法

报错根因

  • 你当前定义的RangePrime类没有实现构造方法__init__,因此实例化类的时候不能直接传入(1,5)这类参数,这是触发TypeError的直接原因。
  • 另外你当前把range_list定义为需要传参的实例方法,没法直接通过属性访问的形式range_prime.range_list拿到结果,需要对应调整实现逻辑。

修正后代码

class RangePrime:
    # 新增构造方法接收实例化传入的参数
    def __init__(self, a, b):
        self.a = a
        self.b = b
    
    # 用property装饰器将方法转为可直接访问的属性
    @property
    def range_list(self):
        x = []
        if self.b < self.a:
            x.extend(range(self.b, self.a))
            x.append(self.a)
        else:
            x.extend(range(self.a, self.b))
            x.append(self.b)
        return x

运行验证

执行你的预期调用逻辑即可得到对应结果:

>>> range_prime = RangePrime(1, 5)
>>> range_prime.range_list
[1, 2, 3, 4, 5]

改动说明

  • 新增__init__构造方法,接收实例化时传入的a、b两个参数并赋值给实例属性
  • 给range_list方法添加@property装饰器,将其转换为可直接访问的实例属性,不需要加括号调用,符合预期的使用形式
  • 调整range_list内部的取值逻辑,直接读取实例属性self.a、self.b,不需要额外传参

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:24:01