组合

组合

组合的用途:

1:做关联

2:小的组成大的

 

组合与继承的使用:

 

1.当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

 

例如:描述一个机器人类,机器人这个大类是由很多互不相关的小类组成,如机械胳膊类、腿类、身体类、电池类

 

2.当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好

 

例如:

 

  猫可以:喵喵叫、吃、喝、拉、撒

 

  狗可以:汪汪叫、吃、喝、拉、撒

#课程类
class Course:
    def __init__(self,c_name,c_type,c_time):
        self.c_name = c_name
        self.c_type = c_type
        self.c_time = c_time

    def syllabus(self):
        print('%s课程是%s类型的,几乎每天都上%s分钟的课程'%(self.c_name,self.c_type,self.c_time))

#教师类    (课程类是属于教师类的)
class Teacher:
    def __init__(self,name,sex,age,Course):
        self.t_name = name
        self.t_sex = sex
        self.t_age = age
        self.t_course = Course

    def course(self,cou_rse):
        print('%s老师教龄为%s年是教课程的'%(self.t_name,cou_rse))

#学校类    (教师类和课程类都是属于学校类的)
class School:
    def __init__(self,s_name,address,category,Teacher):
        self.s_name = s_name
        self.s_address = address
        self.s_category = category
        self.s_course = Course
        self.s_teacher = Teacher

    def course(self):
        print('%s学校的%s课程正在招生'%(self.s_name))

#c1 = Course('语文','文科',45)
# c2 = Course('化学','理科',60)
#
#t1 = Teacher('alex','男',18,c1)
# t2 = Teacher('wusir','男',16)

s1 = School('oldboy','北京','私立',Teacher('alex','',18,Course('语文','文科',45)))  #可通过s1去获取或者创建t1,在通过t1可以去获取c1
#s2 = School('oldboy','南京','私立')                              #就实现了,通过组合的方式实现了关联
#s3 = School('oldboy','东京','私立')

print(s1.s_teacher.t_course)
s1.s_teacher.t_course.syllabus()

 

posted @ 2016-12-22 10:16  总要做些什么  阅读(146)  评论(0编辑  收藏  举报