在python中创建对象列表

Create list of object in python

本问题已经有最佳答案,请猛点这里访问。

我必须创建一个包含学生姓名和学号的学生名单但是,当我创建新的班级学生对象时,将其附加到我的列表中,列表中的每个对象都会发生更改,并为所有学生获取相同的数据。我该怎么办??代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Student:
    name = 'abc'
    roll_no = 1

    def print_info (self):
        print(Student.name,"\t",Student.roll_no)

    def input_info (self):
        Student.roll_no = int(input("Enter Student roll number "))
        Student.name = input("Enter Student name ")

ch=1
students = []

while ch!=3:
    print("1.Create new Student
2. Display students
3.Exit"
)
    ch=int(input("Enter choice\t"))`enter code here`
    if ch==1 :
        tmp=Student()
        tmp.input_info()
        students.append(tmp)
    elif ch==2:
        print("---Students Details---")
        print("Name\tRoll No")
    for i in students:
        i.print_info()

输出:代码输出


append方法的语法如下:

1
list.append(obj)

因此,您应将students.append()替换为:

1
students.append(tmp)

此外,您的print_infoinput_info方法不显示给定学生的属性,而是显示类Student本身的属性(对于类的每个实例始终相同)。你应该解决这个问题。