[英]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.