士兵突击

重点理解:一个对象的属性,可以是另一个类创建的对象。

项目需求:

1、士兵许三多有一把AK47
2、士兵可以开火
3、枪能够发射子弹
4、枪能够装填子弹

项目分析:

根据项目需求,可以提炼出两个类,

枪类的属性有:名字、子弹数量
枪类的方法有:装填子弹、射出子弹

人类的属性有:名字、枪
人类的方法有:开火

因为许三多需要使用AK47,所以我们应该首先开发枪类。

项目开发:

开发枪类:

在开发枪对象的shoot方法时,要先判断枪是否还有子弹,如果没有,需要直接使用return关键字停止执行下面的代码。

class Gun:def __init__(self, name):self.name = nameself.bullets = 0def add_bullet(self, count):self.bullets += countdef shoot(self):if self.bullets <=0:print("%s没有子弹了" % self.name)returnself.bullets -= 1print("突突突,%s还有%d发子弹" % (self.name, self.bullets))ak47 = Gun("AK47")
ak47.add_bullet(5)
ak47.shoot()

开发士兵类:

假设每个新兵都没有枪。因为新兵没有枪,所以需要通过形参传递的属性只有name一个。在使用士兵类创建好许三多对象之后,可以使用赋值语句将AK47赋值给许三多的枪属性。

在定义属性的时候,如果不知道设置什么初始值,可以设置为None,这样就避免了在外部给对象设置属性。

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

在开发士兵类的fire方法的时候:
1、判断是否有枪
2、喊一声口号
3、装填子弹
4、射击

class Solider:def __init__(self, name):self.name = nameself.gun = Nonedef fire(self):# 判断士兵是否有枪if self.gun is None:print("%s还没有枪"% self.name)return# 喊一声口号print("冲啊。。。。")# 装填子弹self.gun.add_bullet(5)# 开火self.gun.shoot()xusanduo = Solider("许三多")
xusanduo.gun = ak47
xusanduo.fire()

这节课的重点是,一个对象的属性,可以是另外一个类创建的对象,所以在士兵开枪的时候,就可以调用封装在枪类里面的装填子弹和发射子弹的方法。

在判断士兵有没有枪的时候,用了身份运算符is

运算符 实例
is 类似id(x) =id(y)
is not 类似id(a) != id(b)

is用于判断两个变量引用对象是否为同一个
==用于判断引用变量的值是否相等

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

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

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

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

  2. python面向对象——封装,继承,多态

    目录 一.类的使用方法 二.魔法方法 2.1__init__() 2.2.__str()__ 2.3.__str()__ 三.继承 3.1概念 3.2多继承 3.3子类重写父类的同名属性和方法 3.4 ...

  3. Python 面向对象封装和继承

    1.封装 将属性和方法抽象出来,封装在一个类中:比如前面的例子--定义类和构造方法,李雷和李华都有年龄和身高,将其抽象出来,封装在学生这个类里面. 2.继承 使用现有类的所有功能,在无需重新编写原来的 ...

  4. python封装举例_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 ...

  5. python 面向对象的封装_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 ―― 将 属性 和 ...

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

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

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

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

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

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

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

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

最新文章

  1. 使用Java监控工具出现 Can't attach to the process
  2. HDU 3555 Bomb
  3. 这三个NLP项目写进简历,网申通过率提高50%
  4. python 多文件知识
  5. fastjson解析多层数据_怎么解析三层List json数据
  6. 双目标定与矫正 matlab
  7. 那些云中的负载均衡器——Azure、AWS和NetScaler
  8. 安装php服务器,安装php服务器环境的方法
  9. 规划以及安装Exchange2007
  10. python删除数据库的数据完整代码_轻松掌握Python对数据库的增、删、改、查
  11. 阿里平台上转的 数据模型架构规范
  12. NLPIR ICTCLAS2015分词系统的使用
  13. mysql多主集群_MYSQL-galera多主集群
  14. JS 获取浏览器高度和宽度
  15. Gitee Pages Pro 初体验 FreeSSL申请过程小记
  16. 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
  17. 一鸣心所向:数字营销中的智商、逆商和情商
  18. 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动
  19. 喜大普奔!Maya 2022来了?!
  20. eclipse输出中文变成乱码问题

热门文章

  1. rust原地复活_Rust语言的缺点
  2. pc端网易云音乐可自定义背景插件。
  3. Linux下可以替代windows的软件汇总:(不断完善中)
  4. 【开发工具】【Dropbear】Dropbear编译安装
  5. [转载]Matlab fmincon函数用法
  6. 全志平台双路LVDS配置
  7. 梦之光芒Game1解题记录
  8. Ubuntu下安装取色器
  9. java.sql.SQLException:Invalid value for getInt()-'zhangsan'
  10. PowerMILL视频教程 拆铜公电极 模具钢料编程加工CNC编程