构建抽奖人员信息的类结构; 新建一个Person类作为父类,存储一些基本属性和通用属性; 新建一个Student类,作为Person的子类,重写父类的部分方法,用于获取Student对象独有信息; 新建一个Teacher类,作为Person的子类,重写父类的部分方法,用于获取Teacher对象独有信息; 通过多态和工厂模式来构建耦合度低的代码框架结构;
时间: 2023-11-27 18:50:31 浏览: 55
设计一个Person类,有Person类派生一个Student类和一个Teacher类
以下是构建抽奖人员信息的类结构的示例代码:
```python
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_gender(self):
return self.gender
class Student(Person):
def __init__(self, name, age, gender, student_id):
super().__init__(name, age, gender)
self.student_id = student_id
def get_student_id(self):
return self.student_id
class Teacher(Person):
def __init__(self, name, age, gender, teaching_subject):
super().__init__(name, age, gender)
self.teaching_subject = teaching_subject
def get_teaching_subject(self):
return self.teaching_subject
```
上述代码中,我们定义了一个`Person`类作为父类,存储了一些基本属性和通用属性,如姓名、年龄和性别等。接着定义了一个`Student`类和一个`Teacher`类作为`Person`的子类,分别重写了父类的部分方法以获取学生和教师对象独有的信息。
在构建耦合度低的代码框架结构方面,我们可以使用多态和工厂模式来实现。具体实现方式如下:
```python
class PersonFactory:
def create_person(self, name, age, gender):
pass
class StudentFactory(PersonFactory):
def create_person(self, name, age, gender, student_id):
return Student(name, age, gender, student_id)
class TeacherFactory(PersonFactory):
def create_person(self, name, age, gender, teaching_subject):
return Teacher(name, age, gender, teaching_subject)
def main():
student_factory = StudentFactory()
teacher_factory = TeacherFactory()
students = []
students.append(student_factory.create_person('Tom', 20, 'male', '20210001'))
students.append(student_factory.create_person('Jane', 19, 'female', '20210002'))
teachers = []
teachers.append(teacher_factory.create_person('David', 35, 'male', 'math'))
teachers.append(teacher_factory.create_person('Lisa', 28, 'female', 'physics'))
for student in students:
print("Student Name: {}, Age: {}, Gender: {}, ID: {}".format(student.get_name(), student.get_age(), student.get_gender(), student.get_student_id()))
for teacher in teachers:
print("Teacher Name: {}, Age: {}, Gender: {}, Subject: {}".format(teacher.get_name(), teacher.get_age(), teacher.get_gender(), teacher.get_teaching_subject()))
if __name__ == "__main__":
main()
```
上述代码中,我们定义了一个`PersonFactory`类作为工厂类,其中声明了一个`create_person`方法用于创建不同类型的人员对象。接着定义了一个`StudentFactory`类和`TeacherFactory`类作为`PersonFactory`的子类,重写了`create_person`方法以创建学生和教师对象。最后在`main`函数中通过调用不同的工厂对象来创建不同类型的人员对象,并输出其信息。
通过上述多态和工厂模式的实现,我们可以实现耦合度低的代码框架结构,方便后续的扩展和维护。
阅读全文