python对象初始化期间的属性错误

时间:2012-01-25 08:41:03

标签: python initialization attributeerror

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是文件中的另一个类。谢谢你的建议。

2 个答案:

答案 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