Python: “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没有定义”的错误,但如果我能解决这个问题,至少我就知道怎么处理其他的了。那么我该怎么做呢?
2 个回答
4
在Python中,缩进是很重要的。self
是在__init__()
这个函数里面定义的,所以如果你想在第332行使用这个self
,就要把它缩进到和上面那行对齐。
11
如果你提供的代码片段准确反映了你程序中的内容,那么问题在于你的 __init__
构造函数里只有一行代码。你需要修正一下缩进。
Self
这个词只在类的成员函数中定义。你没有缩进的代码其实并不属于构造函数,而是在你 import
这个类的时候就被执行了。
Python 的一个很大的优点就是它通过缩进来识别代码块,而不是用大括号或者 begin
、end
这样的方式。你 必须 正确使用缩进,这样解释器才能理解你的代码。