Python 传递类变量作为对类方法的引用

我有以下 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

        return



avl = AVLTree()

avl.insert(5)

print(avl._root)


印刷None


似乎将类变量self._root作为参数传递给成员方法不会改变它的值。


我读到 python 通过引用传递所有类成员,并且只将不可变类型(int 等)作为值传递。


知道为什么我不能修改函数self._root中的值吗_insert?我该怎么做?谢谢


一只萌萌小番薯
浏览 124回答 1
1回答

MYYA

您可以完全控制调用方式_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需要适当地更新它们。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python