Python - 两个 类 将用户输入附加到同一个列表,如何在循环中显示其数据

Python - two classes appending user input to the same list, how to display its data within a loop

我是 python 编程新手。我目前正在开发一个涉及 类 的简单程序。我有一个名为 Students 的 class 和另一个名为 Instructor 的,它们都接受来自用户和 save/append 的输入到同一个名为 college_records 的列表中。在显示结果时,我有两种方法'display_student_info()' 和 'display_student_info()' 在 for 循环中,我得到错误:

                for item in college_records:
                    item.display_student_information()
                for item in college_records:
                    item.display_instr_information()
'...
AttributeError: 'Instructor' object has no attribute 'display_student_information'

请指教..

问题是你在一个列表上有一个循环,其中有来自两个不同 classes 的对象,但你调用了相同的方法“display_student_information()”。问题是,当你在一个讲师上循环时,它的实例 class 没有这样的方法。

你可能想创建一个超级class,用一个通用的方法“显示信息”,像这样:

class CollegePerson:

    def __init__(self, name):
        self.name = name

    def display_info(self):
        print(self.name)


class Instructor(CollegePerson):

    def __init__(self, name, field):
        super(Instructor, self).__init__(name=name)
        self.field = field

    def display_info(self):
        super(Instructor, self).display_info()
        print(self.field)


class Student(CollegePerson):

    def __init__(self, name, year):
        super(Student, self).__init__(name=name)
        self.year = year

    def display_info(self):
        super(Student, self).display_info()
        print(self.year)

然后您可以在包含 Instructors 和 Students 对象的列表中循环,并显示如下信息:

for college_person in my_list:
        print(college_person.display_info())