2012-11-21 162 views
-2

我目前正在研究python編程。NameError:name'self'未定義?

class A: 
    def LoadPosition(self): 
     FILE = open('a.txt', "r+") 

     i = 0 
     for node in self.nodes: 
      line = FILE.readline() 
      if i == 0: 
       scaling_factor == float(line) 
       i += 1 
      else: 
       tmpn, tmpx, tmpy, tmpa = line.split('\t') 
       node.id = tmpn 
       node.coordinate_x = float(tmpx) 
       node.coordinate_y = float(tmpy) 
       node.area = int(tmpa) 
     FILE.close() 

這是很好過,但所有的突然,它顯示了NameError消息。請幫助我。

在此先感謝。

+2

你在原始代碼中有相同的縮進嗎?這似乎是問題所在。您需要通過右邊的'4空格'縮進函數中的所有代碼。 –

+0

@RohitJain:他不能。這將是'IndentationError:意外的unindent' – inspectorG4dget

+0

'Class'→'class' – arshajii

回答

6

您以奇怪的方式混合空格和製表符,這可能會讓Python感到困惑。下面是我得到的,當我複製並粘貼到編輯窗口代碼:

In [2]: for line in s.splitlines(): 
    ...:  print repr(line) 
    ...:  
'' 
' class A:' 
' \tdef LoadPosition(self):' 
'\t  FILE = open(\'a.txt\', "r+")' 
' \t' 
'\t\t i = 0' 
' \t for node in self.nodes:' 
' \t \tline = FILE.readline()' 
' \t \tif i == 0:' 
' \t \t\tscaling_factor == float(line)' 
' \t \t\ti += 1' 
' \t \telse:' 
" \t \t\ttmpn, tmpx, tmpy, tmpa = line.split('\t')" 
'\t  \t  \tnode.id = tmpn' 
' \t\t   \tnode.coordinate_x = float(tmpx)' 
' \t\t   \tnode.coordinate_y = float(tmpy)' 
' \t\t  \t node.area = int(tmpa)' 
'\t\t FILE.close()' 

[注意,如果從貼出的問題有人複製代碼,而不是原始的編輯窗口,這可能不會發生 - 在至少有時會被壓制,看到我的原始標籤 - 所以誰嘗試你的代碼的人可能沒有任何問題。]

步驟#1:使用python -tt yourfilenamehere.py運行您的代碼,以確認它是一個選項卡錯誤。

步驟#2:切換到四處使用標籤。

+0

原代碼很好,但謝謝。 –

+0

@SangChae:你是說原始代碼在'python -tt'中存活了嗎? – DSM

+0

哦,我的壞。您的評論是正確的。這非常有幫助!謝謝。 –