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

Python实例化NumberNode报对象不可调用错误求助

问题排查及修复方案
  • 常量未定义报错:你当前代码片段中未声明TT_INT、TT_FLOAT两个常量,直接访问会触发NameError。你需要在代码作用域内提前定义这两个常量,示例如下:
# 按需调整常量值,和你词法分析模块输出的token类型保持一致即可
TT_INT = "INT"
TT_FLOAT = "FLOAT"
  • 类属性/方法未定义报错:
    1. 确认AnotherClass的__init__初始化方法中已经正确赋值了current_tok属性,未初始化直接访问self.current_tok会触发AttributeError
    2. 确认AnotherClass中已经实现了advance方法,用来切换当前指向的token,未定义直接调用self.advance()会触发AttributeError
      参考初始化逻辑:
    class AnotherClass:
        def __init__(self, token_stream):
            self.token_stream = token_stream
            self.pointer = 0
            self.current_tok = self.token_stream[self.pointer]
        
        def advance(self):
            self.pointer += 1
            if self.pointer < len(self.token_stream):
                self.current_tok = self.token_stream[self.pointer]
            else:
                self.current_tok = None
        # 保留你原有factor方法逻辑
    
  • 类定义覆盖报错:确认你当前代码作用域内没有重复定义过NumberNode类,如果你此前定义过不带参数/参数不匹配的同名NumberNode类,会覆盖你现在给出的正确实现,实例化传参时会触发TypeError,可以在实例化前加一行print(NumberNode.__init__)确认构造方法参数是否符合预期。
  • 缓存问题:如果在交互式环境(Python Shell、Jupyter Notebook等)中运行,需要重新运行所有代码块/重新导入模块,避免旧的类定义缓存导致的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:05