2017-01-22 2 views
-1

Я вроде новичок в Python и я не могу пройти мимо этой ошибки:Python - __init __() отсутствует 1 требуется позиционная аргумент:

Traceback (most recent call last): 
    File "***", line 63, in <module> 
    bst = Node() 
TypeError: __init__() missing 1 required positional argument: 'val' 

В принципе, программа является BST, которая позволит вам вставлять, искать и искать минимальный элемент, только идя влево.

Вот код (извините, это венгерский)

class Node: 
     def __init__(self, val): 
       self.ertek = val 
       self.balgyerek = None 
       self.jobbgyerek = None 
       self.gyoker = None 

     def beszur(self, pri): 
       if self.gyoker: 
         return self.gyoker.beszur(pri) 
       else: 
         self.gyoker = Node(pri) 
         return True 
       if self.ertek == pri: 
         return False 
       elif self.ertek > pri: 
         if self.balgyerek: 
           return self.balgyerek.beszur(pri) 
         else: 
           self.balgyerek = Node(pri) 
           return True 
       else: 
         if self.jobbgyerek: 
           return self.jobbgyerek.beszur(pri) 
         else: 
           self.jobbgyerek = Node(pri) 
           return True 
     def keres(self, pri): 
       if self.gyoker: 
         return self.gyoker.keres(pri) 
       else: 
         return False 

       if(self.ertek == pri): 
         return True 
       elif self.ertek > pri: 
         if self.balgyerek: 
           return self.balgyerek.keres(pri) 
         else: 
           return False 
       else: 
         if self.jobbgyerek: 
           return self.jobbgyerek.keres(pri) 
         else: 
           return False 
     def minimumertek(self): 
       jelenlegi = self 

       while(jelenlegi.balgyerek is not None): 
         jelenlegi = jelenlegi.balgyerek 

       return self.ertek 

bst = Node() 
+4

«Узел» требует «val». Вы его не предоставляете. – jonrsharpe

+1

У вашего класса есть свойство 'val', но когда вы создаете объект' Node', это не передавало никакого значения. – Arman

ответ

0

Метод __init__ запускается, как только объект класса экземпляра. Ваш метод __init__ имеет два позиционных аргумента: self, который ссылается на экземпляр объекта и передается автоматически, и val, которому присваивается self.ertek. Однако вы не передали значение val. Следовательно, ошибка. Попробуйте передать значение val при создании экземпляра класса. например, bst = Node ('ertek value')

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