我有以下 python 代碼,它將 AVL 樹(shù)的根設(shè)置為指定值。但是,通過(guò)將其傳遞給同一類中的函數(shù)來(lái)設(shè)置類的根變量似乎沒(méi)有任何效果。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作為參數(shù)傳遞給成員方法不會(huì)改變它的值。我讀到 python 通過(guò)引用傳遞所有類成員,并且只將不可變類型(int 等)作為值傳遞。知道為什么我不能修改函數(shù)self._root中的值嗎_insert?我該怎么做?謝謝
1 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以完全控制調(diào)用方式_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
...
(不相關(guān),您的AVLNode班級(jí)還必須存儲(chǔ)指向其兩個(gè)孩子的指針,并且_insert需要適當(dāng)?shù)馗滤鼈?。?/p>
添加回答
舉報(bào)
0/150
提交
取消