Python: «Самость» не определена? - PullRequest
3 голосов
/ 29 октября 2011

Вернемся с тем же запутанным сценарием ... было много проблем с пробелами, которые я исправил ... но, похоже, больше не хватает? Что не так с этим - его высказывающая строка 332 self не определена ...

Вот несколько строк выше и ниже этого скрипта на случай, если это имеет значение:

#-Whats being decompiled start
#map(None,*list) = zip(*list)
class areaset(top_tsv):
   def __init__(self, file_name=0, version=0):
       top_tsv.__init__(self, file_name, version)
   self.frombin_map = [    <--- this is 332
   ('ID'        ,{'t':'ulong','lpad':0x04}),
   ('Name'      ,{'t':'str','s':0x48,'rpad':0x1C}),
   ('RGB color'   ,{'t':'color','rpad':0x01}),
   ('Sound effect ID'  ,{'t':'long'}),
   ('Color RGB'   ,{'t':'rcolor','rpad':0x01}),
   ('Lighting RGB value' ,{'t':'rcolor','rpad':0x01}),
   ('Lighting angle'  ,{'t':'float','s':0x03,'f':0x01}),
   ('Is it City?'  ,{'t':'ubyte','rpad':0x03}),
    ]

Я просто не могу понять это, я не могу думать прямо сейчас .. есть много других ошибок "я не определен", но если я исправлю это, то, по крайней мере, я буду знать, как исправить остальные , Так что мне нужно делать?

Ответы [ 2 ]

10 голосов
/ 29 октября 2011

Если фрагмент кода точно отражает то, что в вашей программе, проблема в том, что у вас есть только одна строка в вашем конструкторе __init__.Вам нужно исправить отступ.

Self определяется только в функциях-членах.Ваш не отступающий код не является частью конструктора, но фактически запускается, когда вы import свой класс.

Одна из замечательных особенностей Python заключается в том, что он использует отступ для распознавания блоков операторов, а не фигурныхфигурные скобки или begin, end.Вы должны правильно использовать отступ, чтобы переводчик понял ваш код.

4 голосов
/ 29 октября 2011

Отступы важны в Python. self определено в __init__(), поэтому при условии, что вы хотите, чтобы self упоминалось в строке 332, сделайте отступ, соответствующий строке выше.

...