Python 2.6.7; Windows 7
在python中解决Deitel'Simple Compiler'练习。 github的存储库。编写测试套件。
module compiler.py
class SCompiler( object ) :
RAMSIZE = 100
# more static attributes
def __init__( self ) :
self.symbolTable = [ TableEntry( ) ] * SCompiler.RAMSIZE
self.lineFlags[ -1 ] * SCompiler.RAMSIZE
# more initializations
堆栈跟踪。
File "testCompiler.py", line 45, in <module>
tool = compiler.SCompiler( )
File "absolutePath\compiler.py", line 37, in `__init__`
self.lineFlags[ -1 ] * SCompiler.RAMSIZE
AttributeError: 'SCompiler' object has no attribute 'lineFlags'
我不确定这里有什么拼写错误。文件'compiler.py'文件以静默方式编译。 TableEntry是文件中的另一个类。谢谢你的建议。
答案 0 :(得分:1)
你得到AttributeError
,因为它调用:
self.lineFlags[-1]
在了解lineFlag
之前。
但是从下面的行(来自您链接的存储库中的文件compiler.py)判断:
self.smlData = [ 0 ] * SCompiler.RAMSIZE
我认为作者忘了=
,试着替换:
self.lineFlags[ -1 ] * SCompiler.RAMSIZE
使用:
self.lineFlags = [ -1 ] * SCompiler.RAMSIZE
答案 1 :(得分:0)
在尝试将其视为数组之前,您必须初始化self.lineFlags。
self.lineFlags = []
self.lineFlags[-1] * SCompiler.RAMSIZE