Ошибка атрибута python при инициализации объекта - PullRequest
0 голосов
/ 25 января 2012

Python 2.6.7;Windows 7

Решение задачи «Простой компилятор» Deitel на 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 - другой класс в файле.Спасибо за ваш совет.

Ответы [ 2 ]

1 голос
/ 25 января 2012

Вы получаете AttributeError, потому что он вызывает:

self.lineFlags[-1]

прежде чем узнать, что такое lineFlag.

Но, судя по строке ниже (из файла compiler.py в репозитории, который вы связали) :

self.smlData = [ 0 ] * SCompiler.RAMSIZE

Я думаю, что автор забыл =, попробуйте заменить:

self.lineFlags[ -1 ] * SCompiler.RAMSIZE

с:

self.lineFlags = [ -1 ] * SCompiler.RAMSIZE
0 голосов
/ 25 января 2012

Вы должны инициализировать self.lineFlags, прежде чем пытаться обрабатывать его как массив.

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