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 strip() 函数和 split() 函数的详解及实例
Feb 03 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python实现仿射密码的思路详解
Apr 23 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
新手必备Python开发环境搭建教程
May 28 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
10个很棒的jQuery代码片段
2015/09/24 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
python得到windows自启动列表的方法
2018/10/14 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
小学数学国培感言
2014/03/10 职场文书
团日活动总结范文
2014/04/25 职场文书
三万活动总结
2014/04/28 职场文书
经营目标管理责任书
2014/07/25 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
西柏坡观后感
2015/06/08 职场文书
小型婚礼主持词
2015/06/30 职场文书
董事长致辞
2015/07/29 职场文书
小学教师教学随笔
2015/08/14 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript