Jun Jie Oi Ответов: 1

Как мне устранить эту ошибку в этом коде Python


Я пытаюсь написать программу на Python как часть задания, и мне нужно было использовать LinkedList и узлы, чтобы решить этот вопрос. Однако когда я пытаюсь запустить программу я получаю сообщение об ошибке как таковое:

Traceback (most recent call last):
  File "C:\Users\baseline\Desktop\DSAG\ProjectTest2.py", line 75, in <module>
    ll.AddBookAtPosition(book5, 3)
  File "C:\Users\baseline\Desktop\DSAG\ProjectTest2.py", line 49, in AddBookAtPosition
    head=head.next
AttributeError: 'function' object has no attribute 'next'


Любая Помощь Или Совет, Которые Направят Меня В Правильном Направлении, Будут Очень Признательны

Что я уже пробовал:

This Is My Code That I have written so far

<pre>class Node :
    def __init__(self, newData):
        self.data = newData
        self.next  = None
    
    def getData(self):
        return self.data
    
    def setData(self,newData):
        self.data = newData

    def getNext(self):
        return self.next

    def next(self):
        return self.next

    def setNext(self,newNode):
        self.next = newNode


class LinkedList :
    def __init__(self):
        self.head  = None

    def AddBookToFront(self,newNode):
        newNode.setNext(self.head)
        self.head = newNode

    def next(self):
        return self.next

    def insertAfter(self, prev_node, new_data):
            
            if prev_node is None:
                return

            new_node = Node(new_data)
     
            new_node.next = prev_node.next
     
            prev_node.next = new_node

    def AddBookAtPosition(head, newNode, position):
        start=head
        if position == 0:
            return Node(newNode, head)
        while position > 1:
            head=head.next
            position-=1
        head.next= Node(newNode, head.next)
        return start     
    
    def printAll(self):
        cursor = self.head
        while cursor is not None:
            print(cursor.getData())
            cursor=cursor.getNext()

book1=("abc", "Peter")
book2=("def", "James")
book3=("ghi", "Sam")
book4=("jkl", "Tom")
book5=("mno", "Jessie")

a = Node(book1)
b = Node(book2)
c = Node(book3)
d = Node(book4)

ll=LinkedList()
ll.AddBookToFront(b)
ll.AddBookToFront(a)
ll.insertAfter(ll.head.next, book4)
ll.AddBookAtPosition(book5, 3)

ll.printAll()

Jun Jie Oi

Я записал код, как показано ниже..
узел класса :
def __init__(self, newData):
self.data = newData
self.next = нет

деф метода GetData(самовыдвижение):
вернуться самостоятельно.сведения

def setData(self,newData):
self.data = newData

def getNext(self):
вернуться самостоятельно.далее

деф рядом(самовыдвижение):
вернуться самостоятельно.далее

def setNext(self,newNode):
self.next = newNode


класс LinkedList :
деф __инит__(самостоятельная):
сам.голова = нет

def AddBookToFront(self,newNode):
newNode.setNext(самовыдвижение.глава)
сам.head = newNode

def getNext(self):
вернуться самостоятельно.далее

def insertAfter(self, prev_node, new_data):

если prev_node равен None:
вернуть

new_node = узел(new_data)

new_node.следующий = prev_node.далее

prev_node.следующий = new_node

def AddBookAtPosition(head, newNode, position):
старт=голова
если позиция == 0:
возвращаемый узел(newNode, head)
в то время как позиция > 1:
руководитель=руководитель.то getnext
Позиция-=1
head.next= узел(newNode, head.next)
обратный старт

деф печатные издания(самовыдвижение):
курсор = self.head
пока курсора нет ни одного:
печати(курсор.метода GetData())
курсор=cursor.getNext()

книга 1=("Азбука", "Петр")
book2=("def", "James")
книга 3=("ги", "Сэм")
book4=("jkl", "Tom")
book5=("mno", "Jessie")

a = узел(книга 1)
b = узел(книга 2)
c = узел(книга 3)
d = узел(книга 4)

ll=LinkedList()
Лл.AddBookToFront(б)
Лл.AddBookToFront(а)
ll.insertAfter(ll.head.next, book4)
ll.AddBookAtPosition(book5, 3)

Лл.печатные издания()

Но я все еще вижу ошибку, как показано ниже..

Обратная трассировка (самый недавний призыв последнего):
Файл "C:\Users\TP_baseline\Desktop\DSAG\ProjectTest2.py", строка 75, in <module>
лл.AddBookAtPosition(book5, 3)
Файл "C:\Users\TP_baseline\Desktop\DSAG\ProjectTest2.py", строка 49, в AddBookAtPosition
руководитель=руководитель.то getnext
AttributeError: объект 'function' не имеет атрибута 'getNext'

Я не уверен, что это правильное исправление, которое вы предложили мне принять. Любые дополнительные указания будут весьма признательны.

1 Ответов

Рейтинг:
10

Thomas Daniels

Ваш класс оба имеет атрибут next и функция next Это не очень хорошая идея, потому что, как вы можете видеть, столкновения случаются. Переименуйте либо функцию, либо атрибут.