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列表append和+的区别浅析
Feb 02 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
python实现内存监控系统
Mar 07 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
python实现串口自动触发工作的示例
Jul 02 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
Django获取应用下的所有models的例子
Aug 30 Python
python实现超市商品销售管理系统
Nov 22 Python
Python随机数函数代码实例解析
Feb 09 Python
深入了解NumPy 高级索引
Jul 24 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中防止恶意刷新页面的代码小结
2012/10/31 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
php命令行写shell实例详解
2018/07/19 PHP
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
python封装对象实现时间效果
2020/04/23 Python
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
用Python shell简化开发
2018/08/08 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
python用for循环求和的方法总结
2019/07/08 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
如何手工释放资源
2013/12/15 面试题
仓库管理计划书
2014/05/04 职场文书
导师推荐信范文
2014/05/09 职场文书
小学安全汇报材料
2014/08/14 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书