12.27

笔记:

(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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值