Python类和对象的定义与实际应用案例分析


Posted in Python onDecember 27, 2018

本文实例讲述了Python类和对象的定义与实际应用。分享给大家供大家参考,具体如下:

1.DVD管理系统

# -*- coding:utf-8 -*-
#! python3
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();

本机测试运行结果:

Python类和对象的定义与实际应用案例分析

2.给宠物看病

# -*- coding:utf-8 -*-
#! python3
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)

本机测试运行结果:

Python类和对象的定义与实际应用案例分析

3.计算机

# -*- coding:utf-8 -*-
#! python3
class Operation(object):
  '''
  四则运算的父类,接收用户输入的数值
  '''
  def __init__(self, number1=0, number2=0):
    self.num1 = number1
    self.num2 = number2
  def GetResult(self):
    pass
  pass
#加法运算类
class OperationAdd(Operation):
  def GetResult(self):
    return self.num1 + self.num2
#减法运算类
class OperationSub(Operation):
  def GetResult(self):
    return self.num1 - self.num2
#乘法运算类
class OperationMul(Operation):
  def GetResult(self):
    return self.num1 * self.num2
#除法运算类
class OperationDiv(Operation):
  def GetResult(self):
    if self.num2 == 0:
      return '除数不能为0 '
    return 1.0*self.num1 / self.num2
#其他操作符类
class OperationUndef(Operation):
  def GetResult(self):
    return '操作符错误'
#简单工厂类
class OperationFactory(object):
  def choose_oper(self,ch):
    if ch == '+':
      return OperationAdd()
    elif ch == '-':
      return OperationSub()
    elif ch == '*':
      return OperationMul()
    elif ch == '/':
      return OperationDiv()
    else:
      return OperationUndef()
if __name__ == "__main__":
  ch = ''
  while not ch == 'q':
    num1 = input('请输入第一个数值: ')
    oper = str(input('请输入一个四则运算符: '))
    num2 = input('请输入第二个数值: ')
    # Operation(num1,num2)
    OF = OperationFactory()
    oper_obj = OF.choose_oper(oper)
    oper_obj.num1 = num1
    oper_obj.num2 = num2
    print('运算结果为: ',oper_obj.GetResult())

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
简单介绍Python中的try和finally和with方法
May 05 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
Python之文字转图片方法
May 10 Python
python文件写入write()的操作
May 14 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
Python中Unittest框架的具体使用
Aug 27 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
用Python绘制漫步图实例讲解
Feb 26 Python
一起来学习Python的元组和列表
Mar 13 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 #Python
kafka-python批量发送数据的实例
Dec 27 #Python
Python闭包思想与用法浅析
Dec 27 #Python
对python操作kafka写入json数据的简单demo分享
Dec 27 #Python
python消费kafka数据批量插入到es的方法
Dec 27 #Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 #Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 #Python
You might like
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP中phar包的使用教程
2017/06/14 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
JQuery里选择超链接的实现代码
2011/05/22 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python妹子图简单爬虫实例
2015/07/07 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python 调用Java实例详解
2017/06/02 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
党员岗位承诺书
2014/03/25 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
政协委员个人总结
2015/03/03 职场文书
如何写观后感
2015/06/19 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers