面向对象封装案例 II

文章目录

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

目标

  • 士兵突击案例
  • 身份运算符

封装

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

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

01. 士兵突击

需求

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

1.1 开发枪类

shoot 方法需求

  • 1> 判断是否有子弹,没有子弹无法射击
  • 2> 使用 print 提示射击,并且输出子弹数量
class Gun:def __init__(self, model):# 枪的型号self.model = model# 子弹数量self.bullet_count = 0def add_bullet(self, count):self.bullet_count += countdef shoot(self):# 判断是否还有子弹if self.bullet_count <= 0:print("没有子弹了...")return# 发射一颗子弹self.bullet_count -= 1print("%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 = Nonedef 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()

小结

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

02. 身份运算符

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

  • Python 中针对 None 比较时,建议使用 is 判断
运算符 描述 实例
is is 是判断两个标识符是不是引用同一个对象 x is y,类似 id(x) == id(y)
is not is not 是判断两个标识符是不是引用不同对象 x is not y,类似 id(a) != id(b)

is 与 == 区别:

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

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

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

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

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

  2. BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面

    BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...

  3. Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发

    Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...

  4. JavaSE面向对象学习笔记

    面向对象的介绍 写程序的套路 面向:拿.找 对象"能干活的东西 面向对象编程:拿东西过来做对应的事情 当我们想要在代码当中完成一件事情的时候,我们是拿对应的东西来做这件事情 面向对象编程的例 ...

  5. Python学习笔记:面向对象编程(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. 简明Python教程学习笔记_6_面向对象编程

    面向对象编程:https://www.liaoxuefeng.com/wiki/897692888725344/923030496738368 面向对象高级编程:https://www.liaoxue ...

  7. JS学习笔记之面向对象 5.3

    1 面向对象与面向过程 1.1 面向过程编程 POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一 ...

  8. Java SE基础学习笔记2·面向对象

    文章目录 对象 和 类 面向对象 类 类的定义步骤 对象 对象的使用 定义数组对象数组 对象内存图 单个对象 多个对象 多个对象指向相同 成员变量和局部变量 封装 private 关键字 被其他类使用 ...

  9. 学习笔记----MATLAB面向对象编程入门02--类的方法、构造函数

    本系列内容为<MATLAB面向对象编程–从入门到设计模式>学习笔记,特此说明. 定义类的方法 类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Comm ...

最新文章

  1. 玩聚的Blog墙 VIII
  2. 再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》
  3. 将Java应用程序作为Windows服务安装
  4. IPC--进程间通信四(信号量)
  5. [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
  6. keepalived详解(二)——keepalived安装与配置文件
  7. Android开机键失灵启动手机的解决的方法
  8. 使用Bash Bunny从被锁定的系统抓取登陆凭据
  9. 岂曰无衣 与子同袍——解析月狂病amp;壳之少女的世界
  10. 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
  11. CactiEZ中文解决方案和使用教程
  12. 免费网络视频监控软件cmsclient
  13. spark编程ERROR01——java.lang.NullPointerException
  14. STM32L0系列之【工程开始】
  15. 开发网页需要学什么?
  16. 实用糖尿病学读书笔记-第28章-糖尿病患者的教育
  17. [我的作死案例]图书馆泡妹记 上
  18. 笔记本玩cf如何调全屏 笔记本玩cf屏幕两边有黑边怎么办
  19. 计算机语言中的逻辑异或的应用,异或同或门逻辑符号_利用或门和非门设计的异或门方案...
  20. 游戏蓝牙耳机怎么选?游戏大神推荐四款好用的游戏蓝牙耳机

热门文章

  1. android番茄时钟代码,一种实现极简番茄时钟的思路
  2. 2021年中国皮卡产销量及市场竞争格局分析[图]
  3. 每日一结(10.31)
  4. Linux红帽8.2系统中引导过程及引导修复
  5. Javascript显示隐藏DIV
  6. Redis集群和应用——02
  7. SAS 系统全称为Statistics Analysis System
  8. c语言-查找字符串子串(类似strstr()函数)
  9. 曝新款苹果手机将采用低功耗微处理器,Find My定位在关机状态下也能使用
  10. idea一直indexing.........