0

Python 2.6.7; ウィンドウズ7

Deitel の「Simple Compiler」演習を Python で解決します。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 は、ファイル内の別のクラスです。アドバイスありがとうございます。

4

2 に答える 2

1

それが呼び出すので、あなたは得るAttributeError

self.lineFlags[-1]

何であるかを知る前にlineFlag

しかし、以下の行で判断すると(リンクしたリポジトリのファイルcompiler.pyから) :

self.smlData = [ 0 ] * SCompiler.RAMSIZE

著者が忘れたと思います、=置き換えてみてください:

self.lineFlags[ -1 ] * SCompiler.RAMSIZE

と:

self.lineFlags = [ -1 ] * SCompiler.RAMSIZE
于 2012-01-25T08:56:14.190 に答える
0

配列のように扱う前に、self.lineFlags を初期化する必要があります。

self.lineFlags = []
self.lineFlags[-1] * SCompiler.RAMSIZE
于 2012-01-25T08:51:44.060 に答える