你的问题不是你的代码,而是你运行的代码。如果您仔细阅读错误和代码,它将显示:
File "D:\Projects\Reuters\ReutersParser.py", line 38, in __init__
SGMLParser.__init__(self, verbose)
NameError: global name 'sgmllib' is not defined
您会注意到在python认为产生此错误的行中没有对“sgmllib”的引用。这意味着以下两点之一:要么错误不是源于此(python很混乱),要么显示的代码
不是正在执行的代码
. 例如,当您在一个ide中运行代码时,在代码执行之间不重新启动python解释器时,后者非常常见。它将执行旧代码,但显示回溯时将显示新代码。我猜是你干的
sgmllib.SGMLParser.__init__(self, verbose)
在过去的某个时候。
通过重命名类修复它的原因可能是您做了一些事情——比如编辑代码——导致IDE重新启动解释器,正确地清理它,或者(意外地)以正确的方式重新加载了正确的模块,以便它看到新的代码。由于您是以类命名模块的(顺便说一句,这是一个糟糕的样式),所以我假设您在重命名类时重命名了模块,所以这次您的ide使用了新代码。当然,直到下次发生同样的事情。