首页 > 解决方案 > python中的学生姓名和标记类-定义时出现未定义错误

问题描述

老实说,我不想粘贴这个,因为这是一个愚蠢的问题,但我多次尝试并更改了代码。最后几行显示未定义对象的错误。你能帮忙吗?

    class Studentsmarks(object):
      def __init__(self, name, testmark):
        self.name=name
        self.testmark=testmark
      
      def getmark(self): #function to return mark attribute from the class object
        return self.testmark
      
      def getname(self): #function to access the class object and return the name attribute from it
        return self.getname
    
      def __str__(self): 
        return self.name + ' : ' + str(self.getname()) +'  ::'+  str(self.getmark())
    
    # Define a function for building a Record 
    # which generates list of all the students 
      def studnetobject(rec,name, testmark):
        rec.append(Studentsmarks(name, testmark))
        return rec
    
      def main():
        studentlist=[]
        for each in range(0,1):
          name=input("Enter student name:")
          testmark=input("Enter student mark:")
          studentlist=studnetobject(rec, name, testmark) # << ----------------error undefined studentsobject
        printlist(studentlist)
    
      def printlist(studentlist):
      # Printing the list of student
        print("\n") 
        print("\nList of Students\n") 
        for i in range(studentlist.__str__()):     
          rec.display(studentlist[i]) # <<-------------------------------Undefined rec

标签: pythonclassundefined-referencefunction-call

解决方案


class Studentsmarks(object):
  def __init__(self, name, testmark):
    self.name=name
    self.testmark=testmark
  
  def getmark(self): 
    return self.testmark
  
  def getname(self): 
    return self.name

def studnetobject(rec, name, mark):
  rec.append([name,mark])
  return rec

def main():
  studentlist = []
  for each in range(0,2):
    name=input("Enter student name:")
    testmark=input("Enter student mark:")
    student_obj = Studentsmarks(name=name,testmark=testmark)
    rec=[]
    studentlist.append(studnetobject(rec, student_obj.getname(), student_obj.getmark())) 
  return studentlist

def printlist(studentlist):
  print("\nList of Students and marks\n") 
  for i in range(len(studentlist)):     
    print(studentlist[i])

studentlist = main()
printlist(studentlist)

虽然这可以更简化,但为了帮助您通过比较来理解,我调整了您的代码。

在此处输入图像描述


推荐阅读