2012-01-25 4 views
0

Python 2.6.7; Windows 7python Ошибка атрибута при инициализации объекта

Решите задачу 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 

Stack trace.

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 
Смежные вопросы