分装:

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

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

一、士兵突击案例需求分析

需求:

  1. 士兵张小嘎 有一把 Ak47
  2. 士兵 可以 开火
  3. qiang 能够 发射子弹
  4. qiang 需要 装填子弹----增加子弹数量

根据需求,划分类,共划分两个类,一个是士兵类,一个是qiang类,由于创建士兵类中用到qiang,所以在创建类的时候先创建qiang类。

Soldier

name

gun

__init__(self)

fire(self)

Gun

model

bullet_count

__init__(self, model)

add_bullet(self, count)

Shoot(self)

二、创建qiang类

根据上面的类图表格来创建qiang类。

model是qiang的型号,bullet_count是子弹的数量,add_bullet(self, count)装填子弹方法,Shoot(self)是发射子弹方法。

代码:

class Gun():def __init__(self, model):# 1. qiang的型号self.model = model# 2. 子弹的数量,初始值为0self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了" % self.model)return# 2. 发射子弹, -1self.bullet_count -= 1# 提示发射信息print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count))# 1. 创建qiang对象
ak47 = Gun("Ak47")
# 2. 调用方法
ak47.add_bullet(50)
ak47.shoot()

执行结果:

三、创建士兵类

假设:每一个士兵都没有qiang

定义没有初始值的属性:

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

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

fire方法需求:

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

代码:

class Gun():def __init__(self, model):# 1. qiang的型号self.model = model# 2. 子弹的数量,初始值为0self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了" % self.model)return# 2. 发射子弹, -1self.bullet_count -= 1# 提示发射信息print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count))class Soldier():def __init__(self, name):# 1. 姓名self.name = name# 2. qiang = 新兵没有枪self.gun = None# 1. 创建qiang对象
ak47 = Gun("Ak47")
# 2. 调用方法
ak47.add_bullet(50)
ak47.shoot()# 3. 创建士兵对象-张小嘎
zhang = Soldier("张小嘎")
# 用赋值语句,把ak47交给张小嘎
zhang.gun = ak47print(zhang.gun)

执行结果:

四、完成开火方法

代码:

class Gun():def __init__(self, model):# 1. qiang的型号self.model = model# 2. 子弹的数量,初始值为0self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 1. 判断子弹数量if self.bullet_count <= 0:print("[%s] 没有子弹了" % self.model)return# 2. 发射子弹, -1self.bullet_count -= 1# 提示发射信息print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count))class Soldier():def __init__(self, name):# 1. 姓名self.name = name# 2. qiang = 新兵没有枪self.gun = Nonedef fire(self):# 1. 判断是否有枪if self.gun == None:print("[%s]还没有qiang" % self.name)return# 2. 高喊冲锋口号print("冲啊。。。 [%s]" % self.name)# 3. 装填子弹self.gun.add_bullet(50)# 4. 发射子弹射击self.gun.shoot()# 1. 创建qiang对象
ak47 = Gun("Ak47")
# 2. 调用方法
# ak47.add_bullet(50)
# ak47.shoot()# 3. 创建士兵对象-张小嘎
zhang = Soldier("张小嘎")
# 用赋值语句,把ak47交给张小嘎
zhang.gun = ak47
zhang.fire()
# print(zhang.gun)

执行结果:

以上就是关于面向对象案例士兵突击的分析和代码演练,主要知识点就是一个对象的属性可以是另外一个类创建的对象,以及关键字None的使用更多Python练习题可以关注Python自学网,不断更新。

面向对象分装案例1——小夏爱跑步:(http://t.csdn.cn/RWvpr)

面向对象封装案例2——士兵突击(http://t.csdn.cn/q5OQh)

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

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

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

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

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

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

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

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

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

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

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

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

    目录 案例二 1.首先开发 枪类 2.接着开发 士兵类 3.开发 开火类. 案例一在这里: [Python基础]面向对象封装 案例(一) 案例二 仍然是一步一步开发.同时,下面的第3小步是完整代码,亦 ...

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

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

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

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

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

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

最新文章

  1. mysql在线模拟器_力荐一款在线SQL模拟器
  2. 不看不知道 Vista回收站暗藏的大秘密
  3. poj 1298 The Hardest Problem Ever
  4. Java进阶:@FunctionalInterface函数式接口使用说明
  5. OpenCV形态学变换函数morphologyEx()梯度运算的使用
  6. hdu 3836 Equivalent Sets
  7. (计算机组成原理)第五章中央处理器-第五节2:指令流水线影响因素和分类及多发技术
  8. linux usb书籍,Linux大师(古鲁)话说USB发行版
  9. SAP License:企业高管眼中的信息化是“万能”的
  10. TOSCA自动化测试工具安装
  11. Python+Selenium ----unittest单元测试框架
  12. sql查询数据库所有表、字、注释
  13. iOS 开发 多线程详解之线程生命周期控制
  14. windows10 快速切换网络适配器
  15. Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用
  16. 【牛奶豆腐汤喝出小蛮腰】
  17. IDEA更换背景图片
  18. Qt常用的模板函数说明
  19. 待办事项 数据库表设计
  20. 2020年戴森设计大奖国际20强揭晓

热门文章

  1. 信用卡的使用之二——哪些情况下银行降额
  2. linux网线插拔后ip地址丢失,网线拔掉检测,嵌入式网线直连开发板断电网线拔掉之后,上电仍能自动设置static静态ip地址...
  3. 参考文献名称怎么复制_PDF格式的英文文献怎么翻译成中文?教你一招最简单快速的办法...
  4. [CTF]-HECTF2021部分复现
  5. iOS 怎么查app的下载量
  6. 充电器电压和电池电压关系
  7. 设计和构建区块链社交媒体平台
  8. python常见ubr前缀的使用与作用
  9. 在浏览器上打开、预览Excel xlsx表格文件
  10. java privatekey输出字符串_根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象...