Изменение переменной другого метода класса из другого класса

#python-3.x #python-2.7 #class #methods #attributes

#python-3.x #python-2.7 #класс #методы #атрибуты

Вопрос:

Я новичок в программировании для OOPs, было бы здорово, если бы кто-нибудь мог помочь мне с этим кодом. Следующий код является исходным кодом для связанного списка в python.

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

class LinkedList(object):
    def __init__(self, head=None):
        self.head = head
    def append(self, new_element):
        current = self.head
        if self.head:
            while current.next:
                current = current.next
            current.next = new_element
        else:
            self.head = new_element
  

Кто-нибудь может помочь мне понять, что делает текущая переменная? Также, если есть какая-либо ссылка, откуда я могу получить то же самое в python 3. Я не могу понять, как можно изменить next, если он принадлежит другому методу другого класса.
Аналогичное понимание в python3 было бы полезно

Ответ №1:

Текущая переменная — это временная переменная, которую мы используем для обхода всего связанного списка и достижения конца. Мы запускаем текущую переменную с head, а затем, если есть какая-то следующая, мы присваиваем текущей переменной значение next. Например:

 element 1: [val : 1, next: element 2]
element 2: [val : 2, next: element 3]
element 3: [val : 3, next: None]
  

Head = элемент 1
Теперь мы начинаем с current = element 1 , если current.next != None присваиваем current = current.next (element 2) .
Аналогично теперь, когда current = element 2 мы снова присваиваем current = current.next (element 3) .
Теперь current = element 3 и current.next = None мы бы остановились и назначили current.next = new_element .

О том, как мы изменяем, next даже если она принадлежит другому методу другого класса: next не является локальной переменной, принадлежащей __init__ функции. Это атрибут класса (указанный ключевым словом self ). Вы можете прочитать больше о том, что такое атрибуты класса и что означает self здесь