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实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Tornado高并发处理方法实例代码
Jan 15 Python
python测试mysql写入性能完整实例
Jan 18 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
Python实现的计算马氏距离算法示例
Apr 03 Python
Python3.7中安装openCV库的方法
Jul 11 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
Python制作词云图代码实例
Sep 09 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 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分页的功能模块
2015/06/16 PHP
PHP.vs.JAVA
2016/04/29 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
javascript利用apply和arguments复用方法
2013/11/25 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python生成日历实例解析
2014/08/21 Python
Python计算一个文件里字数的方法
2015/06/15 Python
Python计算字符宽度的方法
2016/06/14 Python
Python代码实现KNN算法
2017/12/20 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Python多线程的退出控制实现
2020/08/10 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
应聘收银员个人的求职信
2013/11/30 职场文书
化学教师自荐信范文
2013/12/28 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
合作意向协议书范本
2014/03/31 职场文书
委托证明模板
2014/09/16 职场文书
感动中国何玥观后感
2015/06/02 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
Golang bufio详细讲解
2022/04/21 Golang