笔记:
(1) 一些方法:
① 将类返回字符串输出:__str__()
② 构造函数(初始化属性):__init__()
③ 自动销毁方法:__del__() 当对象没有引用的时候,或程序结束的时候,程序自动调用
(2) 面向对象的三大特征:封装 继承 多态
① 继承(extend)
1) 子类继承父类,子类可以使用父类的属性和方法
2) 语法:class student(person):
student 类继承了person类
3) 当生成子类对象时,先初始化父类对象,如果父类有__init__方法,并且有属性时,要同过子类初始化赋值
4) 一个类可以有多个子类
5) 在子类中调用父类的属性时,在__init__()方法中使用父类.属性,或self.属性;调用父类方法时,用super().方法
6) 当子类继承父类时,子类的构造方法应该包含父类和子类共同的属性,在子类的初始化方法中,将父类的属性传递给父类,子类的属性给予子类
7) 方法重写:子类继承父类时,子类的方法签名和父类一样,此时子类重写了父类的方法,当生成子类对象时,调用的是子类重写的方法
8) 三代继承:子类初始化方法需要祖父 父亲及自己的属性,可以调用父类的初始化方法传参,可以重写父类的方法,构造的顺序依然是先构造祖父类 再构造父类 最后构造自己
9) 多重继承:类同时继承多个父类 class C(A,B):
作业:
# 12.27 DVD管理系统 dvs = [{'state':'可借 ','name':'罗马假日','date':'','time':10}, {'state':'可借 ','name':'浪漫满屋','date':'','time':15}, {'state':'可借 ','name':'风声鹤唳','date':'','time':2}] def add(): #新增DVD的方法 if len(dvs)>=4: #判断货架上的DVD数量有没有超过4 print('货架已满,无法新增DVD!') else: new = input('请输入DVD名称:') for i in dvs: if i['name']== new: #判断货架上的与增加的是否一样 print('货架上已有该DVD') break else: dvs.append({'state':'可借 ','name':new,'date':'','time':0}) print('添加成功!') def check(): #查看DVD的方法 print('序号\t状态 \t名称 \t借出日期\t借出次数\t') for i in dvs: print('{0}\t{1}\t《{2}》\t{3}\t{4}\t'.format((dvs.index(i)+1),i['state'] ,i['name'],i['date'],i['time'])) def remove(): #删除DVD的方法 if len(dvs)==0: #判断货架上有没有DVD print('货架上已经没有任何DVD!') else: new = input('请输入DVD名称:') for i in dvs: if i['name']== new: #判断货架上有没有需要删除的DVD if i['state']=='可借 ': #判断DVD是否已经借出 del dvs[dvs.index(i)] print('删除成功!') break else: print('无法删除,你要删除的DVD已经借出!') else: print('货架上没有此DVD!') def borrow(): #借出DVD的方法 if len(dvs)==0: #判断货架上有没有DVD print('货架上已经没有任何DVD!') else: new = input('请输入DVD名称:') for i in dvs: if i['name']== new: #判断货架上有没有需要删除的DVD if i['state']=='可借 ': #判断DVD有没有被借出 i['date'] = input('请输入借出时间:') i['time'] += 1 i['state'] = '已借出' break else: print('%s已被借出!'%(i['name'])) break else: print('货架上没有此DVD!') def back(): #借出DVD的方法 new = input('请输入DVD名称:') for i in dvs: if i['name']== new: #判断货架上有没有归还的DVD if i['state']=='可借 ': #判断DVD有没有被借出 print('此DVD未被借出!') break else: i['state'] = '可借 ' temp = input('请输入归还日期:') print('\n借出日期为:%s日'%i['date']) print('归还日期为:%s日'%temp) print('应付租金:%d'%(int(temp)-int(i['date']))) i['date'] = '' break else: print('货架上没有此DVD!') def main(): while True: print('欢迎使用DVD管理系统') print('-'*30) print('1.新增DVD') print('2.查看DVD') print('3.删除DVD') print('4.借出DVD') print('5.归还DVD') print('6.退出DVD') print('-'*30) while True: temp = input('请选择:') if temp =='0': break elif temp =='1': add() print('*'*30) print('输入0返回') elif temp =='2': check() print('*'*30) print('输入0返回') elif temp =='3': remove() print('*'*30) print('输入0返回') elif temp =='4': borrow() print('*'*30) print('输入0返回') elif temp =='5': back() print('*'*30) print('输入0返回') elif temp =='6': return 0 main()