# python的组合的代码的实现
class School:
def __init__(self,name,addr):
self.name=name
self.addr=addr
def zhao_shen(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('阜师院','北京',)
s2=School('oldboy','南京')
s3=School('oldboy','东京')
c1=Course('linux',10,'1h',s1)
print(c1.school.addr)
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))
python的组合方式的授权:
#授权:授权是包装的一个特性,包装一个类型通常是对已存在的类型的一些定制,
# 这种做法可以新建,修改或删除原有产品的功能。
# 其它的则保持原样。授权的过程,即是所有更新的功能都是由新类的某部分来处理,
# 但已存在的功能就授权给对象的默认属性。
class Open:
def __init__(self,filename,mode='r',encoding='utf-8'):
self.file=open(filename,mode,encoding=encoding)#封装了所有的文件方法
self.mode=mode
self.encoding=encoding
# def read(self):
# print("read")
# def write(self):
# pass
def __getattr__(self, item):
print(item)
return getattr(self.file,item)#get 一个内存地址,return 一个方法
f1=Open('a.txt','w')#被封装后 在父类找不到
print(f1.file)
print(f1.read)#找不这个方法 全部被封装在file 这个属性当中