为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只萌萌小番薯 2023-02-22 16:07:10
我有以下 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需要适当地更新它们。)


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信