Я понимаю, почему ниже работает так:
v = 1
d = dict()
d['hi'] = v
d['hi'] = 2
print(v) # prints 1 as expected
А также почему это работает:
class Node:
def __init__(self,val):
self.val = val
n = Node(1)
d['hi_node'] = n
d['hi_node'].val = 100
print(n.val) # prints 100 as expected
Я также считаю , что я понимаю, почему ниже работает так:
n2 = Node(2)
d['hi_n2'] = n2
n3 = Node(3)
val_in_d = d['hi_n2'] # creates a new binding of name val_in_d
val_in_d = Node(3) # updates the location to which val_in_d points
print(n2.val) # still 2
Но есть ли способ указать n2
на n3
, используя словарь d
, который имеет такое же влияние, как и написание n2 = n3
? Итак, наконец, если я печатаю n2.val
, я получаю 3
, т.е. я хочу взять значение, хранящееся в словаре, и изменить его ссылку, чтобы указывать на другой объект, а не просто обновлять значение, хранящееся в словаре.
Любая помощь будет принята с благодарностью.