Python:“自我”没有定义?

时间:2011-10-29 01:35:26

标签: python python-3.x self defined

回到同样令人困惑的脚本..我修复了很多间距问题......但似乎缺少更多?这有什么不对 - 它说法线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 个答案:

答案 0 :(得分:10)

如果代码摘录准确反映了程序中的内容,则问题是__init__构造函数中只有一行。你需要修复你的缩进。

Self仅在成员函数中定义。您的非缩进代码不是构造函数的一部分,但实际上是在import您的类时运行。

Python的一大优点是它使用缩进来识别语句块而不是大括号或beginend必须正确使用缩进才能让解释器理解您的代码。

答案 1 :(得分:4)

缩进在Python中很重要。 self是在__init__()内定义的,因此假设您希望在第332行引用self,请将其缩进以匹配上述行。