Python面向对象封装操作案例详解 II


Posted in Python onJanuary 02, 2020

本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下:

目标

士兵突击案例
身份运算符

封装

封装 是面向对象编程的一大特点
面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中
外界 使用 类 创建 对象,然后 让对象调用方法
对象方法的细节 都被 封装 在 类的内部
一个对象的 属性 可以是 另外一个类创建的对象

01. 士兵突击

需求

士兵 许三多 有一把 AK47
士兵 可以 开火
枪 能够 发射 子弹
枪 装填 装填子弹 —— 增加子弹数量
Python面向对象封装操作案例详解 II

1.1 开发枪类

shoot 方法需求

1> 判断是否有子弹,没有子弹无法射击
2> 使用 print 提示射击,并且输出子弹数量

class Gun:

  def __init__(self, model):

    # 枪的型号
    self.model = model
    # 子弹数量
    self.bullet_count = 0

  def add_bullet(self, count):

    self.bullet_count += count

  def shoot(self):

    # 判断是否还有子弹
    if self.bullet_count <= 0:
      print("没有子弹了...")

      return

    # 发射一颗子弹
    self.bullet_count -= 1
    
    print("%s 发射子弹[%d]..." % (self.model, self.bullet_count))

# 创建枪对象
ak47 = Gun("ak47")
ak47.add_bullet(50)
ak47.shoot()

1.2 开发士兵类

假设:每一个新兵 都 没有枪

定义没有初始值的属性

在定义属性时,如果 不知道设置什么初始值,可以设置为 None

None 关键字 表示 什么都没有
表示一个 空对象,没有方法和属性,是一个特殊的常量
可以将 None 赋值给任何一个变量
fire 方法需求

1> 判断是否有枪,没有枪没法冲锋
2> 喊一声口号
3> 装填子弹
4> 射击

class Soldier:

  def __init__(self, name):

    # 姓名
    self.name = name
    # 枪,士兵初始没有枪 None 关键字表示什么都没有
    self.gun = None

  def fire(self):

    # 1. 判断士兵是否有枪
    if self.gun is None:
      print("[%s] 还没有枪..." % self.name)

      return

    # 2. 高喊口号
    print("冲啊...[%s]" % self.name)

    # 3. 让枪装填子弹
    self.gun.add_bullet(50)

    # 4. 让枪发射子弹
    self.gun.shoot()

小结

创建了一个 士兵类,使用到 init 内置方法
在定义属性时,如果 不知道设置什么初始值,可以设置为 None
在 封装的 方法内部,还可以让 自己的 使用其他类创建的对象属性 调用已经 封装好的方法

02. 身份运算符

身份运算符用于 比较 两个对象的 内存地址 是否一致 —— 是否是对同一个对象的引用

在 Python 中针对 None 比较时,建议使用 is 判断
Python面向对象封装操作案例详解 II
is 与 == 区别:
is 用于判断 两个变量 引用对象是否为同一个
== 用于判断 引用变量的值 是否相等

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a 
False
>>> b == a
True

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

Python 相关文章推荐
Python检测网站链接是否已存在
Apr 07 Python
利用Python破解验证码实例详解
Dec 08 Python
python基础之入门必看操作
Jul 26 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
pandas统计重复值次数的方法实现
Feb 20 Python
基于Python 函数和方法的区别说明
Mar 24 Python
利用Python实现模拟登录知乎
May 25 Python
Python实现搜索算法的实例代码
Jan 02 #Python
python 实现从高分辨图像上抠取图像块
Jan 02 #Python
python base64库给用户名或密码加密的流程
Jan 02 #Python
python文件处理fileinput使用方法详解
Jan 02 #Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 #Python
Pytorch的mean和std调查实例
Jan 02 #Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 #Python
You might like
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
在python中bool函数的取值方法
2018/11/01 Python
在Python中COM口的调用方法
2019/07/03 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
九年级科学教学反思
2014/01/29 职场文书
公司薪酬管理制度
2014/01/31 职场文书
社会公德演讲稿
2014/05/20 职场文书
外贸采购员岗位职责
2015/04/03 职场文书