【面向对象学习笔记day05】面向对象封装案例2+士兵突击+开发枪类+开发士兵类+身份运算符+is 与 == 区别
面向对象封装案例 II
文章目录
- 面向对象封装案例 II
- 目标
- 01. 士兵突击
- 1.1 开发枪类
- 1.2 开发士兵类
- 02. 身份运算符
- is 与 == 区别:
目标
- 士兵突击案例
- 身份运算符
封装
- 封装 是面向对象编程的一大特点
- 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中
- 外界 使用 类 创建 对象,然后 让对象调用方法
- 对象方法的细节 都被 封装 在 类的内部
一个对象的 属性 可以是 另外一个类创建的对象
01. 士兵突击
需求
- 士兵 许三多 有一把 AK47
- 士兵 可以 开火
- 枪 能够 发射 子弹
- 枪 装填 装填子弹 —— 增加子弹数量
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()
小结
- 创建了一个 士兵类,使用到
__init__
内置方法 - 在定义属性时,如果 不知道设置什么初始值,可以设置为
None
- 在 封装的 方法内部,还可以让 自己的 使用其他类创建的对象属性 调用已经 封装好的方法
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 与 == 区别相关推荐
- 「Python」面向对象封装案例3——士兵突击(需求分析、代码演练)
分装: 封装是面向对象编程的一大特点 面向对象编程的第一步:将属性和方法分装到一个抽象的类中 外界使用类创建对象,然后让对象调用方法 对象方法的细节都被封装在累的内部 注意:一个对象的属性可以是另外一 ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发
Polyworks脚本开发学习笔记(十六)-用C#进行Polyworks二次开发 Polyworks支持C#二次开发,用对应的SDK文档试着做一下开发样例. 新建一个C#项目,在解决方案中右键添加引用 ...
- JavaSE面向对象学习笔记
面向对象的介绍 写程序的套路 面向:拿.找 对象"能干活的东西 面向对象编程:拿东西过来做对应的事情 当我们想要在代码当中完成一件事情的时候,我们是拿对应的东西来做这件事情 面向对象编程的例 ...
- Python学习笔记:面向对象编程(1)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- 简明Python教程学习笔记_6_面向对象编程
面向对象编程:https://www.liaoxuefeng.com/wiki/897692888725344/923030496738368 面向对象高级编程:https://www.liaoxue ...
- JS学习笔记之面向对象 5.3
1 面向对象与面向过程 1.1 面向过程编程 POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一 ...
- Java SE基础学习笔记2·面向对象
文章目录 对象 和 类 面向对象 类 类的定义步骤 对象 对象的使用 定义数组对象数组 对象内存图 单个对象 多个对象 多个对象指向相同 成员变量和局部变量 封装 private 关键字 被其他类使用 ...
- 学习笔记----MATLAB面向对象编程入门02--类的方法、构造函数
本系列内容为<MATLAB面向对象编程–从入门到设计模式>学习笔记,特此说明. 定义类的方法 类的方法(Method)一般用来查询(Query)对象的状态,或者向对象发出一个命令(Comm ...
最新文章
- 玩聚的Blog墙 VIII
- 再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》
- 将Java应用程序作为Windows服务安装
- IPC--进程间通信四(信号量)
- [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
- keepalived详解(二)——keepalived安装与配置文件
- Android开机键失灵启动手机的解决的方法
- 使用Bash Bunny从被锁定的系统抓取登陆凭据
- 岂曰无衣 与子同袍——解析月狂病amp;壳之少女的世界
- 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
- CactiEZ中文解决方案和使用教程
- 免费网络视频监控软件cmsclient
- spark编程ERROR01——java.lang.NullPointerException
- STM32L0系列之【工程开始】
- 开发网页需要学什么?
- 实用糖尿病学读书笔记-第28章-糖尿病患者的教育
- [我的作死案例]图书馆泡妹记 上
- 笔记本玩cf如何调全屏 笔记本玩cf屏幕两边有黑边怎么办
- 计算机语言中的逻辑异或的应用,异或同或门逻辑符号_利用或门和非门设计的异或门方案...
- 游戏蓝牙耳机怎么选?游戏大神推荐四款好用的游戏蓝牙耳机
热门文章
- android番茄时钟代码,一种实现极简番茄时钟的思路
- 2021年中国皮卡产销量及市场竞争格局分析[图]
- 每日一结(10.31)
- Linux红帽8.2系统中引导过程及引导修复
- Javascript显示隐藏DIV
- Redis集群和应用——02
- SAS 系统全称为Statistics Analysis System
- c语言-查找字符串子串(类似strstr()函数)
- 曝新款苹果手机将采用低功耗微处理器,Find My定位在关机状态下也能使用
- idea一直indexing.........