Python中类和对象的实际应用

1.DVD管理系统

class dvd:

    def __init__(self,name,price,state):
        self.name=name;
        self.price=price
        self.state=state

    def __str__(self):
        stat='已借出';
        if self.state==1:
            stat='未借出'
        return  '名称:《%s》 单价:%d 状态:%s'%(self.name,self.price,stat)

class DVDManager:
    #存储 多个dvds 每一个元素 都是一个DVD
    dvds=[]
    def init(self):
        self.dvds.append(dvd('光辉岁月',10,0));
        self.dvds.append(dvd('绅士', 5, 1));
        self.dvds.append(dvd('海阔天空', 11, 1));

    def Menu(self):
        self.init()
        while(True):
            print('1.查询所有DVD')
            print('2.增加DVD')
            print('3.借出DVD')
            print('4.归还DVD')
            print('5.退出')
            choose=int(input('请选择:'));
            if choose==1:
                self.showAllDVD();
            elif choose==2:
                self.insertDVD();
            elif choose==3:
                self.jiechuDVD();
            elif choose==4:
                self.rollBackDVD();
            elif choose==5:
                print('5.谢谢使用')
                break;

    def showAllDVD(self):
        for d in self.dvds:
            print(str(d))
    def jiechuDVD(self):
        name = input('请输入DVD的名称:')
        ret = self.checkDVD(name);
        if ret != None:
            if ret.state==0:
                print('dvd 已经借出去了')
                #return;
            else:
                days=int(input('请输入借出天数:'))
                ret.state = 0;
                print('借出 %d 天,应还利息%d '%(days,ret.price*days))

        else:
            print('DVD 不存在!')

    def rollBackDVD(self):
        name = input('请输入归还DVD的名称:')
        ret = self.checkDVD(name);
        if ret == None:
            print('DVD 不存在!')
        else:
            if ret.state == 1:
                print('dvd 未借出!')
            else:
                days= int(input('请输入借出去了多少天?'))
                y_money=ret.price * days
                print('借出 %d 天,应还利息%d ' % (days, y_money))
                money=0;
                while True:
                    money= int(input('请输入金额:'))
                    #带学生完成..
                    if money<y_money:
                        print('不够!')
                    else:
                        break;

                if money>=y_money:
                    print('找零:%d'%(money-y_money));

                ret.state=1;
                print('归还成功!')

    def insertDVD(self):
        name = input('请输入DVD的名称:')
        ret= self.checkDVD(name);
        if ret != None:
            print('DVD 已经存在!')
        else:
            price=int(input('请输入价格:'))
            new_dvd=dvd(name,price,1);
            self.dvds.append(new_dvd)
            print('存放成功!')
    def checkDVD(self,name):
         for d in self.dvds:
             if d.name==name:
                 return d;#返回当前对象-->内存地址
         else:
             return  None;

manager= DVDManager();
manager.Menu();


2.给宠物看病
class pet:
    def kanbing(self):
        print('给宠物看病。。')

class Car(pet):
    def kanbing(self):
        print('给猫咪看病 吃药,吃小黄鱼..')

class Dog(pet):
    def kanbing(self):
        print('给狗狗看病 输液 吃骨头....')

class bird(pet):
    def kanbing(self):
        print('看小鸟看病  拔罐 吃虫子... ')
class pig(pet):
    def kanbing(self):
        print('给小猪看病  针灸  吃猪粮... ')


class ShouVet:
    def JiuZhen(self,pet):
        print('兽医出诊..给宠物看病...')
        pet.kanbing();

class person:
    def kanbing(self):
        print('给人类看病 望闻问切 多喝水..')

dingdang=Car();
kala=Dog();
huangli=bird();
peiqi=pig()
bianque=person()
#----
# syi=ShouVet();
# syi.JiuZhen(dingdang);
# syi.JiuZhen(kala);
# syi.JiuZhen(huangli);
# syi.JiuZhen(peiqi);
# syi.JiuZhen(bianque)

3.计算机

class Operation:
    def __new__(cls):
       pass
    def GetResult(self,numA, numB):
        print('计算2操作数的运算结果')

class OpeartionAdd(Operation):

    def __new__(cls):
        return object.__new__(cls);
        #return  Operation.__new__(cls)

    def GetResult(self,numA,numB):
        return  numA+numB

class OperationSub(Operation):
    def GetResult(self,numA,numB):
        return  numA-numB

class OperationMul(Operation):
    def GetResult(self,numA,numB):
        return  numA*numB
class OperationDiv(Operation):
    def GetResult(self,numA,numB):
        return  numA//numB

class OperationFactory(object):
     #不同的参数创建不同的对象的  函数
    def create_class(self,fu):
        if fu == '+':
            q = OpeartionAdd();
        elif fu == '-':
            q = OperationSub();
        elif fu == '*':
            q = OperationMul();
        elif fu == '/':
            q = OperationDiv();
        return q;

if __name__== '__main__':
    #工厂对象
    factory=OperationFactory();
    numA=int(input('请输入第一个操作数'))
    numB=int(input('请输入第二个操作数'))
    fu = input('请输入运算符:')
    # q代表 由 工厂创建出来的一个计算器
    q=factory.create_class(fu)
    print('计算结果:',q.GetResult(numA, numB))



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值