封装案例 — 士兵突击

一个对象的 属性 可以是 另外一个类创建的对象

需求

  1. 士兵 许三多 有一把 AK47
  2. 士兵 可以 开火
  3. 能够 发射 子弹
  4. 装填 装填子弹 ---- 增加子弹数量
开发士兵类

假设每一个新兵都没有枪

定义没有初始值的属性

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

  • None 关键字表示什么都没有
  • 表示一个空对象,没有方法和属性,是一个特殊的常量
  • 可以将None 赋值给任何一个变量
fire 方法需求
  • 1>判断是否有枪
  • 2>喊一声口号
  • 3>装填子弹
  • 4>射击

代码实现

class Gun:"""枪类"""def __init__(self, model):# 1.枪的型号self.model = model# 2.子弹的数量self.bullet_count = 0def add_bullet(self, count):  # count表示发射子弹的数量"""添加子弹"""self.bullet_count += countdef shoot_bullet(self):"""发射子弹"""# 1.判断子弹数量if self.bullet_count <= 0:print('[%s] 没有子弹了...' % self.model)return# 2.发射子弹, -1self.bullet_count -= 1# 3.提示发射信息print('[%s] 突突突... [%s]' % (self.model, self.bullet_count))class Soldier:"""士兵类"""def __init__(self, name):# 1.士兵的姓名self.name = name# 2.士兵的枪 -> 新兵没有枪(在定义属性时,如果不知道设置什么初始值,可以设置为 None)self.gun = Nonedef fire(self):"""士兵开火"""# 1.判断士兵有没有枪# if self.gun == None:# 在 python中针对None比较时,建议使用 is 判断if self.gun is None:print('[%s] 还没有枪...' % self.name)# 2.高喊口号print('冲啊...[%s]' % self.name)# 3.让枪装填子弹self.gun.add_bullet(50)  # 让士兵的枪装填子弹(一个类的属性作为另一个类的对象)# 4.让枪发射子弹self.gun.shoot_bullet()  # 让士兵的枪发射子弹(一个类的属性作为另一个类的对象)# 1.创建枪对象
AK47 = Gun('AK47')# 2.创建许三多对象
xusanduo = Soldier('许三多')
xusanduo.gun = AK47xusanduo.fire()
身份运算符

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

  • 在 python中针对None比较时,建议使用 is 判断
运算符 描述 实例
is is 是判断两个标识符是不是引用同一个对象 x is y, 类似 id(x) == id(y)
is not is not 是判断两个标识符是不是引用不同对象 x is not y, 类似 id(x) != id(y)
is 与 ==区别:
  • is 同于判断两个变量引用对象是否为同一个
  • == 用于判断 引用变量的值 是否相等
>>> a=[1,2,3]
>>> b=[1,2,3]
>>> b is a
False
>>> b== a
True

面向对象封装案例 --- 士兵突击相关推荐

  1. Python面向对象封装案例——士兵突击

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  2. 【面向对象学习笔记day05】面向对象封装案例2+士兵突击+开发枪类+开发士兵类+身份运算符+is 与 == 区别

    面向对象封装案例 II 文章目录 面向对象封装案例 II 目标 01. 士兵突击 1.1 开发枪类 1.2 开发士兵类 02. 身份运算符 is 与 == 区别: 目标 士兵突击案例 身份运算符 封装 ...

  3. 「Python」面向对象封装案例3——士兵突击(需求分析、代码演练)

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

  4. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  5. Python之 面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 ...

  6. python面向对象_05(面向对象封装案例 II)

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  7. Python中面向对象封装案例——小明爱跑步、摆放家具

    文章目录 面向对象封装案例 目标 1. 封装 2. 小明爱跑步 2.1 小明爱跑步扩展 -- 小美也爱跑步 3. 摆放家具 3.1 创建家具 3.2 创建房间 3.3 添加家具 3.4 小结 面向对象 ...

  8. 21python_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  9. 【Python基础】面向对象封装 案例(一)

    目录 面向对象封装案例 1.案例一(简单) 2.案例二(一个类的对象(创建后所自动执行的_ _str_ _()方法) 充当 另一个类de对象所调用的方法中的参数) 1.初步开发 家具类 HouseIt ...

最新文章

  1. Javascript非构造函数的继承
  2. CentOS6虚拟机下面配置双网卡
  3. pat 乙级 1023 组个最小数(C++)
  4. 单片机的单个IO口可以发送数据吗_关于51单片机各个引脚它的功能你了解多少?...
  5. Python gensim库word2vec 基本用法
  6. 19_python基础—面向对象-类结构、类属性和类方法、静态方法
  7. 【蓝桥杯单片机】红外接收及NEC红外通信协议
  8. 另一种思路比较2个日期是否相等的方式
  9. UITableView单元格选择颜色?
  10. 下面不是android四大组件之一的是,Android四大组件之一 Service
  11. 【渝粤题库】广东开放大学 秘书理论与实务(1) 形成性考核
  12. xp配置iis和php,XP下让IIS支持PHP
  13. php将一个日期字符串转换成举例来说当前的,PHP将一个日期字符串转换成举例来说当前的天数...
  14. Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
  15. 程序读取凡人修仙传热度数据
  16. 数学连乘和累加运算符号_数学所有的公式和符号
  17. 15首史上最经典摇滚柔情歌曲
  18. [HNOI2007]最小矩形覆盖(旋转卡壳)
  19. 一组li或者div里面多个弹出层对应各自的内容
  20. 爬取热门微博数据2018.3.27更新

热门文章

  1. 如何将照片从iPhone导入到Mac
  2. python请输入一个人的名字_print('曾经有一份真挚的爱情放在我面前,那个人的名字是' + goddess),Python旅程开始的地方!...
  3. 火焰纹章核心功能的实现
  4. 【论文笔记】UBR4CTR:User Behavior Retrieval for Click-Through Rate Prediction (SIGIR 20)
  5. 提高程序可读性的技巧
  6. LOESS局部加权非参数回归
  7. 服务器搭建网站公网ip,如何获取公网ip,自己搭建公网ip服务器的方法
  8. HTML和CSS实现京东首页(html和css详解)
  9. 轻松玩转微信公众号排版
  10. 「重磅」微信小程序再也不能打开APP了