我有以下 python 代码,它将 AVL 树的根设置为指定值。但是,通过将其传递给同一类中的函数来设置类的根变量似乎没有任何效果。class AVLTree: class AVLNode: def __init__(self, value) -> None: self.value = value def __init__(self) -> None: self._root = None def insert(self, value: int) -> None: return self._insert(value, self._root) def _insert(self, value, node): if node is None: node = value returnavl = AVLTree()avl.insert(5)print(avl._root)印刷None似乎将类变量self._root作为参数传递给成员方法不会改变它的值。我读到 python 通过引用传递所有类成员,并且只将不可变类型(int 等)作为值传递。知道为什么我不能修改函数self._root中的值吗_insert?我该怎么做?谢谢
1 回答
MYYA
TA贡献1868条经验 获得超4个赞
您可以完全控制调用方式_insert。只是不要用node=None. 就像是
def insert(self, value: int) -> None:
if self._root is None:
self._root = self.AVLNode(value)
else:
self._insert(value, self._root)
def _insert(self, value, node):
# Assume node is not None
...
(不相关,您的AVLNode班级还必须存储指向其两个孩子的指针,并且_insert需要适当地更新它们。)
添加回答
举报
0/150
提交
取消