[英]How to call a class method using an instance of a different class in Python?
我試圖使用兩個類 - 節點和二叉樹來實現二叉樹。 當我插入節點(左或右)時,我使用的方法是insert_left_node
和insert_right_node
,它們是insert_right_node
class BinaryTree
的方法,但我也使用class Node
來創建節點。 每次插入節點后,都會返回當前對象。
現在,如何使用返回的對象 - 當前調用類BinaryTree的插入方法。 例如,在代碼的第二行,語句n3 = n1.insert_left_node(33)
失敗,出現AttributeError: 'Node' object has no attribute 'insert_left_node'
我需要另一種方法來實現這一目標。
碼:
class Node(object):
def __init__(self, data):
self.data = data
self.left = None
self.right = None
class BinaryTree(object):
def __init__(self, root=None):
self.root = Node(root)
def insert_left_node(self, data):
if not self.root:
self.root = Node(data)
else:
current = self.root
while True:
if current.left:
current = current.left
else:
current.left = Node(data)
break
return current
def insert_right_node(self, data):
if not self.root:
self.root = Node(data)
else:
current = self.root
while True:
if current.right:
current = current.right
else:
current.right = Node(data)
break
return current
if __name__ == '__main__':
r = BinaryTree(34) # root
n1 = r.insert_left_node(22)
n2 = r.insert_right_node(45)
n3 = n1.insert_left_node(33) # Fails
print n3
你的要求字面上沒有任何意義。 要實現您想要的功能,您只需將所需的方法添加到要使用的類中即可。 嘗試類似以下的內容:
class Node(object):
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insert_left_node(self, data):
self.left = Node(data)
def insert_right_node(self, data):
self.right = Node(data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.