【发布时间】:2021-11-17 15:01:41
【问题描述】:
由于某些原因,我有一个类以下列方式继承另一个类 (例如)
class student():
def __init__(self,Name_,Grade_):
self.Name=Name_
self.Grade_=Grade
#Some other code
class Classroom(student):
def __init__(self,Class_Name_,Class_Supervisoir_,list_of_students_Names_,
List_of_Students_Grades_):
self.Class_Name=Class_Name_
self.Class_Supervisoir=Class_Supervisoir_
self.list_of_students_Names=list_of_students_Names_
self.List_of_Students_Grades=List_of_Students_Grades_
for _,__ in enumerate(self.List_of_Students_Grades):
exec("self.Student_"+str(__)+"=student("+str(__)+","+str(
self.List_of_Students_Grades[_])+")"
我想从“学生”类创建多个实例,但作为“课堂”类的一部分,即可以像 self.student 一样引用。
但我不知道输入的学生人数(可能很多),我想为每个学生创建一个对象,例如:
self.Student_Mark=student(mark,20)
self.Student_Peter=student(peter,15)
...
等等。
然后的问题是我想像上面那样做一个赋值语句,但是如果不使用 exec() 函数我不能这样做,我已经阅读了在生产级别使用 exec() 函数的安全危险,所以我怎样才能在这里用具有相同功能的东西替换 exec() ?
【问题讨论】:
-
使用列表而不是 n 个变量。例如。
self.students = []; self.students.append(student(...)) -
旁注:对我来说,您的代码很难阅读。去掉变量名后的下划线并在事物之间添加空格。见Style Guide for Python Code