2012-01-25 16 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[-1] 

lineFlagが何であるかを知る前に:それは呼び出すため

self.lineFlags = [] 
self.lineFlags[-1] * SCompiler.RAMSIZE 
1

あなたは、AttributeError得ます。

しかし、(リンクされたリポジトリ内のファイルcompiler.pyから)次の行で判断:私は著者が=を忘れてしまったと思い

self.smlData = [ 0 ] * SCompiler.RAMSIZE 

、交換してみてください。

self.lineFlags[ -1 ] * SCompiler.RAMSIZE 

with:

self.lineFlags = [ -1 ] * SCompiler.RAMSIZE 
関連する問題