设计一个类 Person,包含编号和姓名属性,然后定义派生类学生类 Student 和教师类 Teacher,分别包含不同的属性和方法
时间: 2024-05-14 19:12:56 浏览: 194
好的,这是一个很常见的面向对象的设计问题。可以这样实现:
```python
class Person:
def __init__(self, id, name):
self.id = id
self.name = name
class Student(Person):
def __init__(self, id, name, major):
super().__init__(id, name)
self.major = major
def study(self):
print(f"{self.name} is studying {self.major}.")
class Teacher(Person):
def __init__(self, id, name, course):
super().__init__(id, name)
self.course = course
def teach(self):
print(f"{self.name} is teaching {self.course}.")
```
在这个设计中,`Person` 是一个基础类,包含编号和姓名属性;`Student` 和 `Teacher` 是两个派生类,分别包含专业/课程等不同的属性和方法。
当你创建一个 `Student` 或 `Teacher` 对象时,只需要调用相应的构造函数即可:
```python
s = Student(1, 'Tom', 'Computer Science')
t = Teacher(2, 'Mary', 'Python')
```
然后,你可以调用该类的方法:
```python
s.study() # 输出:Tom is studying Computer Science.
t.teach() # 输出:Mary is teaching Python.
```
希望这个设计对你有所帮助。
阅读全文