未定义 Python 类型



我想对一种语言进行语义检查,我使用ANTLR4来生成解析器和访问者类。但是我遇到了一个问题。如果我使用这种方法print(type(newList[0].expression()))
我会得到这样的类型<class 'IDILParser.IDILParser.IdenetExpressionContext'>
但是,如果我运行下面的代码,我会得到这样的错误NameError: name 'IDILParser' is not defined
我可以问如何解决这个问题吗?谢谢!

from antlr4 import *
if __name__ is not None and "." in __name__:    
    from .IDILParser import IDILParser
else:
    from IDILParser import IDILParser
class IDILVisitor(ParseTreeVisitor):
    def visitAssign(self, ctx:IDILParser.AssignContext):
        if type(newList[0].expression()) is IDILParser.IDILParser.IdenetExpressionContext:
        ...

你确实from IDILParser import IDILParser,这意味着代码中的IDILParser已经直接引用了IDILParser.IDILParser

所以试着去掉那一层:

if type(newList[0].expression()) is IDILParser.IdenetExpressionContext:
    ...

顺便说一句,当您不确定您的代码是作为模块还是脚本运行(也称为相对导入是否有效)时,您还可以执行以下操作:

try:
    from .IDILParser import IDILParser
except ImportError:
    from IDILParser import IDILParser

相关内容

  • 没有找到相关文章

最新更新