Python: ошибка атрибута. У нетипичного объекта нет атрибута 'nxt' - PullRequest
0 голосов
/ 12 марта 2019

У меня проблемы с сортировкой этого односвязного списка. Цель состоит в том, чтобы отсортировать полином по его показателю в порядке убывания. Однако я продолжаю получать ошибку атрибута: Nontype нет атрибута nxt, и я не могу понять, почему. Вот мой код ниже

NodeModule.py

! / USR / бен / питон

import sys

sys.setrecursionlimit (4500)

"" "Модель, содержащая класс Node" ""

Класс Node (объект): "" "Один узел в структуре данных" ""

    def __init__(self, _coefficient, _exponent):
            self._coefficient=_coefficient
            self._exponent=_exponent
            self.nxt=None

    @property
    def coefficient(self):
            return self._coefficient

    @coefficient.setter
    def coefficient(self, c):
            self._coefficient=c

    @coefficient.deleter
    def coefficient(self):
            del self.coefficient

    @property
    def exponent(self):
            return self._exponent

    @exponent.setter
    def exponent(self, e):
            self._exponent=e

    @exponent.deleter
    def exponent(self):
            del self._exponent

    @property
    def nxt(self):
            return self._next

    @nxt.setter
    def nxt(self, n):
            self._next=n

    @nxt.deleter
    def nxt(self):
            del self._next

    def __eq__(self, other):
            if self._exponent==other._exponent:
                    return True
            else:
                    return False

    def __It__(self, other):
            if self._exponent<other._exponent:
                    return True
            else:
                    return False

    def __str(self):
            if self._coefficient>=0:
                    sign="+"
            else:
                    sign=""
            return sign +str(self._coefficient) + "X^" +str(self._exponent)

ListModule.py

! / USR / бен / питон

из NodeModule import Node

Список классов (Узел): "" "Связанный список с предопределенным классом узлов" ""

    def __init__(self):
            self.head=None
            self.count=0


    def isEmpty(self):
            return self.count==0

    def getSize(self):
            return self.count

    def setNode(self, a=5, b=2):
            n=Node(a, b)
            return n

    def insert(self, index, n):
            if index<0 or index > self.count:
                    return False

            if index==0:
                    n.next=self.head
                    self.head=n
                    self.count+=1
                    return True

            walker=self.head
            for i in range(index-1):
                    walker=walker.nxt
            n.nxt=walker.nxt
            walker.next=n
            self.count+=1
            return True

    def delete(self, index):
            if index < 0 or  index > self.count:
                    return False
            if index==0:
                    self.head=self.head.nxt
                    self.count-=1
                    return True

            walker=self.head
            for i in range(index-1):
                    walker=walker.nxt

            walker.nxt=walker.nxt.nxt
            self.count-=1
            return True
    def sort(self):
            temp1=self.head.exponent
            walker=self.head
            j=0
            while j < self.count:
                    for i in range(self.count):
                            walker=walker.nxt
                            if i==0:
                                    if walker.nxt.exponent > temp1:
                                            self.insert(0, walker.nxt)
                                            self.delete(walker.nxt)
                                            return True
                            while walker.nxt is not None and walker.nxt.nxt is not None:
                                    if walker.nxt.exponent < walker.nxt.nxt.exponent:
                                            self.insert(self.getsize(), walker.nxt.nxt)
                                            self.delete(walker.nxt)
                                            return True
                                    return False
                    j+=1

    def str(self):
            if self.isEmpty():
                    return "\nEnd of Polynomial"

            walker=self.head
            output=[]

            while walker is not None:
                    output.append(str(walker))
                    walker=walker._next
            return " + " .join(output)

main.py

! / USR / бен / питон

из NodeModule import Node из списка импорта списка модулей

def readPoly (сообщение):

    l=List()

    n=input(message)
    for i in range(n):
            c=input("Enter the coefficient of term %d " % i)
            e=input("Enter the exponent of term %d " % i)
            l.insert(0, Node(c,e))
    return l

def main ():

    l=readPoly("Enter the number of terms of the polynomial: ")
    print l

    l.sort()
    print l

    l.delete(0)
    print (l)

если name == ' main ': Основной () * +1041 *

1 Ответ

0 голосов
/ 12 марта 2019

Появляется self.head=None, walker=self.head и walker=walker.nxt во втором блоке кода.Это означает, что вы пытаетесь получить свойство .nxt None (a NoneType), которое вы установили как self.head в начале.

...