Ошибка атрибута: нет объекта типа в связанном спискеPython

Программы на Python
Anonymous
Ошибка атрибута: нет объекта типа в связанном списке

Сообщение Anonymous »

Я попытался создать простой односвязный список следующим образом:

Код: Выделить всё

class node:
def __init__(self, data=None):
self.data = data
self.next = None

class linkedlist:
def __init__(self):
self.head = node()

def append(self, data):
curr = self.head
new_node = node(data)
while curr.next != None:
curr = curr.next
curr.next = new_node

def total(self):
curr = self.head
total = 0
while curr.next != None:
curr = curr.next
total += 1
return total

def display(self):
# added total here as well
curr = self.head
em = []
total = 0
while curr.next != None:
curr = curr.next
em.append(curr.data)
total += 1
print(f"LinkedList: {em} \n Total: {self.total()}  ")

def look(self, index):
if index >= self.total():
print("ERROR: Index error" )
curr_index = self.head
idx = 0
while True:
curr_index = curr_index.next
if idx == index:
print(curr_index.data)
idx += 1
Каждый раз, когда я вызываю функцию Look(), я получаю следующую ошибку:

Код: Выделить всё

curr_index = curr_index.next
^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'next'
Что это может означать?
Насколько я знаю, curr_index использует self.head, что, в свою очередь, осуществляется с помощью node(). У node() есть атрибут next.
Эта ошибка отсутствует, когда я вызываю другие функции в классе. Более того, другие функции, за исключением функции Look(), возвращают соответствующие значения без ошибок.
Где мой код идет не так?

Подробнее здесь: https://stackoverflow.com/questions/786 ... inked-list

Вернуться в «Python»