Что за объект next в PythonConsole PyCharm?

Рейтинг: 0Ответов: 1Опубликовано: 27.03.2023

У меня есть код для односвязного списка:

class StackObj:
 
    def __init__(self, data):
        self.__data = data
        self.next = None
 
    @property
    def next(self):
        return self.__next
 
    @next.setter
    def next(self, val):
        self.__next = val
 
 
class Stack:
 
    def __init__(self):
        self.top = None
        self.__last = None
 
    def push_back(self, obj):
        if self.top is None:
            self.top = obj
            self.__last = obj
        else:
            self.__last.next = obj
            self.__last = obj
 
    def pop_back(self):
        obj = self.top
        while obj.next != self.__last:
            obj = obj.next
        obj.next = None
        self.__last = obj
 
    def __add__(self, other):
        self.push_back(other)
        return self
 
    def __mul__(self, other):
        for elem in other:
            self.push_back(StackObj(elem))
        return self

Я создаю список, объект, пушаю этот объект в список:

st = Stack()
o1 = StackObj('o1')
st.push_back(o1)

Вопрос, таков: что за next у меня в PythonConsole? Типо ссылка на следующий объект это приватный атрибут и он ниже написан, _StackObj__next. А вот что за просто next, значение которого None? У меня есть единственное предположение, что это свойство-property, но тогда почему оно NoneType?введите сюда описание изображения

Ответы

▲ 1

Вы сами и задаëте этот атрибут в методе init

self.next = None

В вашем случае чтобы скрыть его нужно явно указать нижние подчёркивания

self.__next = None