我有以下 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
提交
取消