Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm kinda new to python and I can't get past this error:

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

Basically, the program is a BST which would allow you to insert, search and look for the minimum item by only going left.

Here's the code (sorry, it's hungarian)

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()
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
242 views
Welcome To Ask or Share your Answers For Others

1 Answer

The __init__ method is run as soon as an object of a class is instantiated. Your __init__ method has two positional arguments: self which refers to the object instance and is passed automatically, and val which is assigned to self.ertek. However, you didn't pass the value of val. Hence, the error. Try passing the value of val at the class instantiation. e.g bst = Node('ertek value')


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...