组合: 就是将不同的类混合并加入到其他类中,来 增加类的功能 / 提高代码的重用性 / 易于维护(对类的修改会直接反应到整个应用中)
class School:
def __init__(self,name,addr):
self.name=name
self.addr=addr
def zhao_sheng(self):
print('%s 正在招生' %self.name)
class Course:
def __init__(self,name,price,period,school): #school为另一个类
self.name=name
self.price=price
self.period=period
self.school=school
s1=School('oldboy','北京')
c1=Course('linux',10,'1h',s1)
print(c1.__dict__)
print(c1.school.name)
print(s1)
输出:
{'name': 'linux', 'price': 10, 'period': '1h', 'school': <__main__.School object at 0x03415D50>}
oldboy
<__main__.School object at 0x03415D50>
组合–选课案例
class School:
def __init__(self,name,addr):
self.name=name
self.addr=addr
def zhao_sheng(self):
print('%s 正在招生' %self.name)
class Course:
def __init__(self,name,price,period,school):
self.name=name
self.price=price
self.period=period
self.school=school
s1=School('oldboy','北京')
s2=School('oldboy','南京')
s3=School('oldboy','东京')
# c1=Course('linux',10,'1h','oldboy 北京')
# c1=Course('linux',10,'1h',s1)
msg='''
1 老男孩 北京校区
2 老男孩 南京校区
3 老男孩 东京校区
'''
while True:
print(msg)
menu={
'1':s1,
'2':s2,
'3':s3
}
choice=input('选择学校>>: ')
school_obj=menu[choice]
name=input('课程名>>: ')
price=input('课程费用>>: ')
period=input('课程周期>>: ')
new_course=Course(name,price,period,school_obj)
print('课程【%s】属于【%s】学校' %(new_course.name,new_course.school.name))
运行:
1 老男孩 北京校区
2 老男孩 南京校区
3 老男孩 东京校区
选择学校>>: 1
课程名>>: lunix
课程费用>>: 100
课程周期>>: 10
课程【lunix】属于【oldboy】学校