2016-03-27 9 views
0

私は電卓を構築しています。私は、 "NameError:name 'self'が" self.op.Pending == True "というコードを定義していないと判断しています。何もNoneに設定しようとしましたが、エラーが発生しました。どのように私はエラーを取り除くのですか?電卓:名前Pythonクラスのエラー

class calculator(): 
    def __init__(self): 
     self.total = 0 
     self.current = "" 
     self.newNumber = True 
     self.opPending = False 
     self.op = "" 
     self.eq = False 

    def numberPress (self, num): 
     self.eq = False 
     temp = textbox.get() 
     temp2 = str(num) 

    if self.newNumber: 
     self.current = temp2 
     self.newNumber = False 
    else: 
     if temp2 == '.': 
      if temp2 in temp: 
       return 
      self.current = temp + temp2 
      self.display(self.current) 

    def calcTotal(self): 
     self.eq = True 
     self.currrent = float(self.current) 

    if self.opPending == True: #ERROR 
     self.doSum() 
    else: 
      self.total = float(textbox.get()) 

答えて

0

self各機能であなたは、このようにdef func(self...):

を呼び出す関数内でそれを呼び出す必要がありますされている理由あなたの個々の機能の外で定義されていません:

class calculator(): 
    def __init__(self): 
     self.total = 0 
     self.current = "" 
     self.newNumber = True 
     self.opPending = False 
     self.op = "" 
     self.eq = False 

    def numberPress (self, num): 
     self.eq = False 
     temp = textbox.get() 
     temp2 = str(num) 

     if self.newNumber: 
      self.current = temp2 
      self.newNumber = False 
     else: 
      if temp2 == '.': 
       if temp2 in temp: 
        return 
       self.current = temp + temp2 
       self.display(self.current) 

    def calcTotal(self): 
     self.eq = True 
     self.currrent = float(self.current) 

    def call(self): 
     if self.opPending == True: #ERROR 
      self.doSum() 
     else: 
      self.total = float(textbox.get()) 
+0

外」であり、行に4つのスペースを追加する必要があります!さて、GUIを構築する時間。 – user6067378

+0

@ user6067378幸運! –

1

インデントエラーがあるためです:

これはnumpressにカウントすべてです:

def numberPress (self, num): 
     self.eq = False 
     temp = textbox.get() 
     temp2 = str(num) 

をし、次の行は、関数の "" です:

if self.newNumber: 
     self.current = temp2 
     self.newNumber = False 
    else: 
     if temp2 == '.': 
      if temp2 in temp: 
       return 
      self.current = temp + temp2 
      self.display(self.current) 

同じことがdef calcTotal(self):で起こります。この問題を解決するには

あなたは単に私がそれについて忘れてしまった信じることができない、感謝