''' 组合: 定义一个人的类,人有头,躯干,手,脚等数据属性,这几个属性又可以是通过一个类实例化的对象,这就是组合 用途: 1、做关联 2、小的组成大的 ''' class Hand: pass class Head: pass class Trunk: pass class Foot: pass class Person: def __init__(self, id_num, name): self.id_num = id_num self.name = name self.head = Head() # 这几个类实例化无需传参 self.hand = Hand() self.trunk = Trunk() self.foot = Foot() p1 = Person('123', 'alex') # print(p1.__dict__) # 'head': <__main__.Head object at 0x0000020D5EA4ADC0>表示的是当前文件Head对象内存地址 class School: def __init__(self, name, addr, teacher): self.name = name self.addr = addr self.teacher = teacher # 传入的参数为实例化后的对象 class Course: def __init__(self, name, price, period, school, teacher): self.name = name self.price = price self.period = period self.school = school # 传入的参数为实例化后的对象 self.teacher = teacher # 传入的参数为实例化后的对象 class Teacher: def __init__(self, name, jingyan): self.name = name self.jingyan = jingyan t1 = Teacher('林海峰', '5年') s1 = School('南京', 'oldboy', t1) s2 = School('北京', 'oldboy', t1) s3 = School('东京', 'oldboy', t1) msg = { '1': s1, '2': s2, '3': s3, } d1 = { '1': '南京', '2': '北京', '3': '东京', } print(d1) num = input('请输入数字选择校区:') school_obj = msg[num] name = input('课程名:') price = input('课程费用:') period = input('课程周期:') c1 = Course(name, price, period, school_obj, t1) print('课程%s属于%s学校%s校区由%s老师教学' % (c1.name, c1.school.addr, c1.school.name, c1.teacher.name))