Python 对象初始化时的属性错误
Python 2.6.7;Windows 7
在用Python解决Deitel的“简单编译器”练习。代码库在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是文件中的另一个类。谢谢你的建议。
2 个回答
0
在你把self.lineFlags当成数组使用之前,得先给它初始化一下。
self.lineFlags = []
self.lineFlags[-1] * SCompiler.RAMSIZE
1
你遇到 AttributeError
的原因是因为在调用的时候,
self.lineFlags[-1]
它还不知道 lineFlag
是什么。
不过根据下面这一行来看(来自你链接的仓库中的 compiler.py):
self.smlData = [ 0 ] * SCompiler.RAMSIZE
我觉得作者可能忘记加一个 =
,你可以试着把:
self.lineFlags[ -1 ] * SCompiler.RAMSIZE
替换成:
self.lineFlags = [ -1 ] * SCompiler.RAMSIZE