2011-10-29 10 views
3

同じ混乱しているスクリプトを使用して戻ってください...修正されたスペースの問題がたくさんありましたが、もっと不足しているようですね。いただきまし間違ってこれで - それは重要場合にはその言っライン332 selfはここで...Python: "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}), 
    ] 

私はちょうどそれを把握カント、私は今考えることができません..多くの他の "自己が定義されていない"エラーがありますが、私はこの1つを修正する場合は、少なくとも私は残りの部分を修正する方法を知っているでしょう。だから私は何をする必要がありますか?

+1

あなたとあなたの質問に答える人々の両方にとって、それを貼り付ける前に、より小さな例を試してみることが役に立ちます。問題の原因を突き止めることができない場合は、実際には実行されないスニペットよりもスクリプト全体を貼り付けるのが良いですが、実際に実行されるスニペットを作成してエラー。 – Glyph

答えて

10

コードの抜粋がプログラムの内容を正確に反映している場合は、__init__コンストラクタに1行しかないという問題があります。インデントを修正する必要があります。

Selfは、メンバー関数でのみ定義されています。インデントされていないコードはコンストラクタの一部ではありませんが、あなたのクラスimportのときに実際に実行されています。

Pythonの優れた点の1つは、中括弧ではなく文ブロックを認識するためにインデントを使用するか、begin,endです。 は、通訳者がコードを理解するためにインデントを正しく使用する必要があります。

+1

私は「美しさ」が正しいと確信していません。しかし、Pythonはすべてのことを考慮した素晴らしい言語だという事実を主張することはできません。私のためには、空白問題を解決する価値があります。 –

4

Pythonのインデントが重要です。 self__init__()に定義されていますので、を332行目で参照したい場合は、上の行に合わせてインデントしてください。

+0

-1非常に不完全な説明 – Marcin

関連する問題