Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 26, 2017 17:37:36

Jonny2018
Зарегистрирован: 2017-09-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему это работает? Списки Python

class MyNode:
def __init__(self, value = None, next = None):
self.value = value
self.next = next

def add(self, value):

for i in range(value):
self.next = MyNode(i * 5, self)
self = self.next


L = MyNode(5,None)
L.add(3)

Если вывести все элементы (L.value, затем L.next.value, затем L.next.next.value и тд) то дает value: 5, 0, 5, 10 и затем далее по порядку т.к. список циклический.
Но почему это срабатывает ведь в методе add, self при каждой итерации становится self.next и уже не указывает на изначальный узел? Помогите разобраться

Отредактировано Jonny2018 (Сен. 26, 2017 17:39:39)

Офлайн

#2 Сен. 26, 2017 18:03:19

Slow
Зарегистрирован: 2017-07-26
Сообщения: 88
Репутация: +  4  -
Профиль   Отправить e-mail  

Почему это работает? Списки Python

Потому что, кхм, вы нигде не изменяете переменную L (ну, после первого раза, конечно)

Посмотрите на id(L)
и на id(self) во время каждой итерации цикла внутри вашего add

Отредактировано Slow (Сен. 26, 2017 18:05:17)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version