一、什么是组合

组合就是一个对象具有一个属性,这个属性的指是另外一个类的对象

二、为什么要使用组合

组合是用来解决类和类之间代码冗余问题的最原始的选课系统

class Person:

school = 'oldboy'

class Teacher(Person):

# 老师类在实例化的时候设置课程名,课程价格,课程周期

def __init__(self,name,age,level,course_name,course_price,course_period):

self.name=name

self.age=age

self.level=level

class Student(Person):

# 学生类在实例化的时候设置课程名,课程价格,课程周期

def __init__(self,name,age,course,course_name,course_price,course_period):

self.name=name

self.age=age

self.course=course

使用组合过后的选课系统

class Person:

school = 'oldboy'

class Teacher(Person):

def __init__(self,name,age,level,course):

self.name=name

self.age=age

self.level=level

#course是课程对象,表示老师教授的课程

self.course=course

class Student(Person):

def __init__(self,name,age,course):

self.name=name

self.age=age

# course是课程对象,表示学生选的课程

self.course = course

class Course:

# 把这个course类实例化过后,在实例化老师或者学生的时候,当作属性的值传递给老师或学生的course属性值

def __init__(self,course_name,course_price,course_period):

self.name=course_name

self.price=course_price

self.period=course_period

course=Course('Python',20180,7) # 实例化课程对象

stu=Student('nick',19,course) # 实例化学生对象:course是课程对象

teacher=Teacher('nick',19,'高级',course) # 实例化老师对象:course是课程对象

#查看老师教授的课程名

print(teacher.course.name)

python

终极版本选课系统可以让一个学生选择多门课程

class Person:

school = 'oldboy'

class Teacher(Person):

def __init__(self,name,age,level,course):

self.name=name

self.age=age

self.level=level

#course是课程对象,表示老师教授的课程

self.course=course

class Student(Person):

# course=[] #在这里定义成course是了列表是错误的

def __init__(self,name,age):

self.name=name

self.age=age

# course是课程对象,表示学生选的课程

self.course_list = []

def choose_course(self,course):

# self.course=[] #错误

#把课程对象追加到学生选课的列表中

self.course_list.append(course)

def tell_all_course(self):

#循环学生选课列表,每次拿出一个课程对象

for course in self.course_list:

#课程对象.name 取到课程名字

print(course.name)

class Course:

def __init__(self,course_name,course_price,course_period):

self.name=course_name

self.price=course_price

self.period=course_period

course=Course('Python',20199,7)# 实例化课程对象course

stu1=Student('nick',19) # 实例化学生对象stu1

stu1.choose_course(course)# 调用stu1的选课绑定方法choose_course(course)

# 把实例化的课程对象放到stu1的课程属性列表里

stu2=Student('王二丫',19)# 实例化stu2学生对象

stu2.choose_course(course)# 调用stu2的选课绑定方法choose_course(course)

# 把实例化的课程对象放到stu2的课程属性列表里

stu2.choose_course(Course('linux',19999,5))

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: