2012-01-25 52 views
0

Python 2.6.7; Windows 7python對象初始化期間的屬性錯誤

在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

在嘗試像處理數組一樣對待它之前,您必須初始化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