设置父类person,设置子类student继承父类,建立五个学生对象按成绩排序
时间: 2023-07-22 14:38:09 浏览: 92
好的,让我来回答你的问题。
首先,我们需要定义一个 `Person` 父类,其中包含一个 `name` 属性和一个 `score` 属性,用于表示人的姓名和分数。代码如下:
```python
class Person:
def __init__(self, name, score):
self.name = name
self.score = score
```
接下来,我们可以定义一个 `Student` 子类,继承自 `Person` 父类,用于表示学生。除了继承自父类的 `name` 和 `score` 属性外,我们可以再定义一个 `id` 属性,用于表示学生的学号。代码如下:
```python
class Student(Person):
counter = 1
def __init__(self, name, score):
super().__init__(name, score)
self.id = Student.counter
Student.counter += 1
```
在 `Student` 类的构造方法中,我们首先通过 `super()` 方法调用父类的构造方法,来初始化继承自父类的属性。然后,我们再为每个学生对象分配一个唯一的学号,通过 `counter` 属性来实现自增。这样,每次创建一个新的学生对象时,都会自动分配一个新的学号。
最后,我们可以创建五个学生对象,并按照分数从高到低进行排序。代码如下:
```python
if __name__ == '__main__':
students = [
Student('Tom', 90),
Student('Jerry', 80),
Student('Alice', 70),
Student('Bob', 85),
Student('Cathy', 95)
]
sorted_students = sorted(students, key=lambda x: x.score, reverse=True)
for student in sorted_students:
print(f'Student ID: {student.id}, Name: {student.name}, Score: {student.score}')
```
在上面的代码中,我们首先创建了五个学生对象,并将它们放入一个列表中。然后,我们调用 `sorted()` 函数,将列表按照学生的分数从高到低排序,返回一个新的排序后的列表。最后,我们遍历排序后的列表,打印出每个学生的学号、姓名和分数。
这就是一个简单的示例,希望能对你有所帮助!
阅读全文