【问题标题】:Define a list in class and call it and use it in a function in python在类中定义一个列表并调用它并在python中的函数中使用它
【发布时间】:2021-12-05 23:10:54
【问题描述】:

我是 python 中的类和对象的新手,需要帮助。 我需要创建一个具有“所学课程”属性的学生班级。该对象应存储班级编号(如 001)、上它的学期(如“秋季”)以及学生获得的成绩。 我被“Class taken” 属性困住了。我不明白我是否必须创建一个列表或以其他方式定义它。

基本上,我无法定义一个列表并调用它并在函数中使用它。

错误是

NameError: name 'self' is not defined

提前感谢您的帮助:)

class Student(object):

def __init__(self, number,ClassNumber,Semester,Grade):
    self.number = number
    self.classTaken=[]

def register():
  ClassNumber = input('Enter ClassNumber:  ')
  Semester = input('Enter Semester:  ')
  Grade = input('Enter Grade:  ') 
  print(self.classTaken.append(Student(Semester)))

student1= Student.register(self.classTaken)

【问题讨论】:

  • 代码存在一些问题。例如,属性self.Classes 似乎没有在任何地方定义; register 是一个函数,但应该是一个方法;此外,list.append 不会返回任何内容。
  • 如果你解释你想要达到的目标会有所帮助。例如,Student.register 调用应该返回什么? classTaken 的用途是什么?
  • Student.register 需要收集 ClassNumber、Semester、Grade 并放在一个对象中。 Classes taken 是一个对象,应该存储班级编号(如 001)、学习的学期(如“Fall”)以及学生获得的成绩。
  • 如果我理解正确,我认为你根本不需要 Classes 属性。那么Student.register应该是一个返回新Student实例的方法吧?实例中应该有提到的属性。
  • 请贴出实际缩进的代码。

标签: python list function class object


【解决方案1】:

你可以试试这个

class Student():
    def __init__(self):
        self.classTaken = []

    def register(self,Number,ClassNumber,Semester,Grade):
        self.classTaken.extend((Number,ClassNumber,Semester,Grade))

student1 = Student()
student1.register(4,2,6,8)
print(student1.classTaken)

【讨论】:

  • 非常感谢。这对我有帮助:)
  • OK 没问题 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
相关资源
最近更新 更多