为什么我一直收到错误:AttributeError:'int'对象没有属性'subject'

时间:2014-03-07 04:54:28

标签: python linked-list nodes

因此,我正在创建一个代码,通过指定特定课程,学生可以接下来学习哪些课程。例如,如果用户输入“ECE 256”,那么共同条件应该是ECE 256L,它们可以采用的下一个类是ECE 304.

List.print_list()

文件“/ Users / marleneterrones / Dropbox / ECE 480 Group / linked list / node.py”,第45行,在print_list中     result = result + str(dataObj.subject) AttributeError:'str'对象没有属性'subject'

class Node:
    def __init__(self, subject=None, corec=[] , next_class=[]):
        self.subject = subject          
        self.corec = corec              
        self.next_class  = next_class   

class LinkedList:
    def __init__(self):
        self.firstNode = Node(None, None, None)     
        self.lastNode = self.firstNode              
        self.size = 0                           

    def add(self, subject,corec):
        """Add a node to the list"""
        node = Node(subject , corec ,None)
        node.subject = subject;
        node.corec = corec;

        if self.firstNode.subject == None:
            self.firstNode = node
            self.lastNode = node
        else:
            self.lastNode.next_class = node
            self.lastNode = node

        self.size += 1

    def print_list(self):
        """prints whats ever in the array """
        result = ""
        currentNode = Node( None,None, None)
        currentNode = self.firstNode
        i = 0

        result = result + "("

        while currentNode != None:
            if i > 0:
                result = result + ","

            dataObj = currentNode.subject
            dataObj2 = currentNode.corec

            if dataObj != None:
                result = result + str(dataObj.subject)

            if dataObj2 != None:
                result = result + str(dataObj2.corec)

            currentNode = currentNode.next_class

            i = i + 1
        result = result + ")"
        return result

1 个答案:

答案 0 :(得分:0)

  1. dataObj = currentNode.subject使dataObj成为int,然后dataObj.subject会导致此类错误。你可能只想要

    result = result + str(dataObj)
    
  2. 您的代码段中有一些不必要的代码,例如:

    node = Node(subject , corec ,None)
    node.subject = subject;
    node.corec = corec;
    

    由于您已使用nodesubject初始化了corec,因此不需要后两行。