while True:
currentData = currentNode.data # line with error
if currentData <= newNode.data:
currentPosition += 1
currentNode = currentNode.next
self.insertAt(newNode, currentPosition)
Здесь вы никогда не выходили, пока l oop. Итак, последний currentNode будет содержать None. Проверьте, достигли ли вы конца LinkedList и выйдите.
Я хотел бы добавить еще одну вещь.
while currentPosition is not position:
currentPosition += 1
previousNode = currentNode
currentNode = currentNode.next
newNode.next = currentNode
previousNode.next = newNode
Этот l oop в функции InsertAt, вам нужно знать, указанная позиция правильная или нет. Допустим, общее количество позиций было 25, а введенная позиция была 30. Теперь ваш l oop потерпит неудачу, поскольку он никогда не достигнет 30. Поэтому вам нужно добавить один выход l oop, в то время как само условие говорит:
while ((currentPosition is not position) and (currentNode is not None))
Теперь код никогда не потерпит неудачу.