2016-03-27 3 views
0

Я строю калькулятор. Я получаю «NameError: name« self »не определяется утверждение« if 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

Спасибо, не могу поверить, я забыл об этом! Теперь пришло время для создания графического интерфейса. – user6067378

+0

@ пользователь6067378 удачи! –

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):.

Чтобы исправить это вам просто нужно добавить 4 места для линий, которые являются «вне»

 Смежные вопросы

  • Нет связанных вопросов^_^