Я думаю, вы путаете специальный одноэлементный объект Python None
с обычным экземпляром класса Python.
И вы путаете термин «переменная» классического языка программирования (контейнер для значений) со ссылками (переменные, которые ссылаются или указывают на контейнеры значений)
В Python все имена переменных являются ссылками на объекты.
Скажем, вы делаете что-то вроде
a = n1
a.val = 10
Это будет отражено в n1
объекте (экземпляре класса Node), поскольку a
является ссылкой на n1
.
Попытка сделать что-то вроде
n4.next = None
a = n4.next
a = Node(3)
заставит a
сначала обратиться к None, а затем изменит a
для ссылки на другой объект, новый экземпляр Node.
Если a
относится к экземпляру Node, вы можете изменить экземпляр с помощью a
n4.next = Node(2)
a = n4.next
a.val = 5 #this would alter n4.next
Но если a
относится к специальному объекту None, None не будет действовать как экземпляр узла и, следовательно, не может быть изменен