#python #python-3.x #self #defined
#python #python-3.x #self #определено
Вопрос:
Возвращаемся с тем же запутанным сценарием.. было МНОГО проблем с интервалами, которые я исправил… но, похоже, больше не хватает? Что не так с этим — его строка 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}),
]
Я просто не могу понять это, я не могу думать прямо сейчас .. есть много других ошибок «self не определен», но если я исправлю эту, то, по крайней мере, я буду знать, как исправить остальное. Итак, что мне нужно сделать?
Комментарии:
1. Было бы полезно, как для вас, так и для людей, отвечающих на ваши вопросы, попытаться создать более минимальный пример, прежде чем вставлять его. Если вы действительно не можете понять, что вызывает проблему, тогда лучше вставить весь скрипт, чем фрагмент, который на самом деле не будет выполняться, но еще лучше создать небольшой фрагмент, который действительно выполняется, и выдает ошибку.
Ответ №1:
Если отрывок кода точно отражает то, что есть в вашей программе, проблема в том, что у вас в конструкторе есть только одна строка __init__
. Вам нужно исправить отступ.
Self
определяется только в функциях-членах. Ваш код без отступов не является частью конструктора, но фактически запускается при запуске import
вашего класса.
Одна из замечательных особенностей Python заключается в том, что он использует отступы для распознавания блоков операторов, а не фигурные скобки или begin
, end
. Вы должны правильно использовать отступы, чтобы интерпретатор мог понять ваш код.
Комментарии:
1. Я не уверен, что «красота» — правильное слово. Однако вы не можете оспаривать тот факт, что python — потрясающий язык, учитывая все обстоятельства. Для меня стоит смириться с проблемой пробелов.
Ответ №2:
Отступ имеет значение в Python. self
определяется внутри __init__()
, поэтому, предполагая, что вы хотите, self
чтобы на него ссылались в строке 332, сделайте отступ, чтобы он соответствовал строке выше.