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实例之wxpython中Frame使用方法
Jun 09 Python
Python的迭代器和生成器使用实例
Jan 14 Python
通过5个知识点轻松搞定Python的作用域
Sep 09 Python
python 垃圾收集机制的实例详解
Aug 20 Python
django 在原有表格添加或删除字段的实例
May 27 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
详解python如何引用包package
Jun 07 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 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中cookies使用指南
2007/03/16 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
分享php分页的功能模块
2015/06/16 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
javascript动画浅析
2012/08/30 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
python测试驱动开发实例
2014/10/08 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Yahoo-PHP面试题2
2014/12/06 面试题
什么是.net的Remoting技术
2016/07/08 面试题
大学生的网络创业计划书
2013/12/26 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
爱国主题班会教案
2015/08/14 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL