一、组合

什么是组合?

就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象。

通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式,间接将两个类关联整合,从而减少类与类之间的代码冗余

class A:
    pass
class B:
    pass
b = B()
b.a=A()

借用之前的代码进行改进:

class OldboyPeople:
    school = 'Oldboy'

    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

class OldboyStudent(OldboyPeople):
    def __init__(self,name,age,sex,score=0):
        OldboyPeople.__init__(self,name,age,sex)
        self.score = score
        self.courses=[]

    def choose(self):
        print('%s choosing course' % self.name)

    def tell_all_course(self):
        print('学生[%s]选修的课程如下'%self.name)
        for obj in self.courses:
            obj.tell_info()

class OldboyTeacher(OldboyPeople):
    def __init__(self,name,age,sex,level):
        OldboyPeople.__init__(self,name,age,sex)
        self.level = level
        self.courses = []

    def score(self,stu,num):
        stu.score = num

    def tell_all_course(self):
        print(('老师[%s]教授的课程如下'%self.name).center(50,'*'))
        for obj in self.courses:
            obj.tell_info()
        print('*'*60)


class Coures:
    def __init__(self,c_name,c_price,c_period):
        self.c_name = c_name
        self.c_perice = c_price
        self.c_period = c_period

    def tell_info(self):
        print('<课程名:%s 价格:%s 周期:%s'%(self.c_name,self.c_perice,self.c_perice))


stu = OldboyStudent('zfj',18,'male')
teh = OldboyTeacher('egon',19,'femal',10)
# print(stu.__dict__)
python = Coures('python全栈开发','1900','5mons')
linux = Coures('linux架构师','100','3mons')

stu.courses.append(python)
teh.courses.append(python)
stu.tell_all_course()
teh.tell_all_course()
View Code

相关文章:

  • 2021-11-25
  • 2021-09-25
  • 2021-04-12
  • 2021-08-15
  • 2022-12-23
  • 2021-10-11
  • 2021-07-28
  • 2022-12-23
猜你喜欢
  • 2021-11-18
  • 2021-10-30
  • 2022-02-19
  • 2022-01-04
  • 2022-12-23
  • 2021-06-29
  • 2022-12-23
相关资源
相似解决方案