Я очень новичок в python и нуждаюсь в некоторой помощи при создании экземпляра объекта. Интерпретатор python создает проблемы при создании объекта класса I. Есть два класса, BTNode
и BST
(которые хранятся в файлах bst_node.py
и bst.py
соответственно):Создание экземпляра объекта Python
# file: bst_node.py
class BTNode:
"""a binary search tree node implementation"""
def ___init___(self, value):
self.value = value
self.left is None
self.right is None
self.parent is None
def ___init___(self, value, left, right, parent):
"""set the parameters to corresponding class members"""
self.value = value
self.left = left
self.right = right
self.parent = parent
def is_leaf(self):
"""check whether this node is a leaf"""
if self.left.value is None and self.right.value is None:
return True
return False
# file: bst.py
from bst_node import *
class BST:
"""a binary search tree implementation"""
def ___init___(self, value):
self.root = BTNode(value)
def insert(self, curRoot, newValue):
if curRoot.is_leaf():
if newValue < curRoot.value:
newNode = BTNode(newValue, None, None, curRoot)
curRoot.left = newNode
else:
newNode = BTNode(newValue, None, None, curRoot)
curRoot.right = newNode
else:
if newValue < curRoot.value:
self.insert(curRoot.left, newValue)
else:
self.insert(curRoot.right, newValue)
Так, в интерпретаторе я:
import bst as b
t1 = b.BST(8)
и я получите сообщение об ошибке, которое гласит, что это constructor takes no arguments
Конструктор явно принимает аргумент value
, так что здесь происходит неправильно? Как я могу исправить эту ошибку?
Спасибо, вся помощь очень ценится!
Не ваш вопрос, но если я ошибаюсь, у вас возникнет проблема с такими строками, как 'self.left is none', потому что' is' сравнивается и будет либо 'True', либо' False'. Вместо этого используйте 'self.left = None'. – askewchan