Python实例化NumberNode报对象不可调用错误求助
问题排查及修复方案
- 常量未定义报错:你当前代码片段中未声明
TT_INT、TT_FLOAT两个常量,直接访问会触发NameError。你需要在代码作用域内提前定义这两个常量,示例如下:
# 按需调整常量值,和你词法分析模块输出的token类型保持一致即可 TT_INT = "INT" TT_FLOAT = "FLOAT"
- 类属性/方法未定义报错:
- 确认
AnotherClass的__init__初始化方法中已经正确赋值了current_tok属性,未初始化直接访问self.current_tok会触发AttributeError - 确认
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
相关产品推荐
相关产品推荐

