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())
我是 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())