当前位置: 首页 > news >正文

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

面向对象封装案例 II

目标

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

封装

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

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

1. 士兵突击

需求

  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. 封装的 方法内部,还可以让 自己的 使用其他类创建的对象属性 调用已经 封装好的方法

2. 身份运算符

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

  • Python 中针对 None 比较时,建议使用 is 判断
运算符描述实例
isis 是判断两个标识符是不是引用同一个对象x is y,类似 id(x) == id(y)
is notis 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

crackme杂记007

花指令的特征&#xff1a; 遇到这种指令&#xff0c;可以立即判断出这是一个花指令&#xff0c;所以花指令较多的话&#xff0c;我们也可以通过搜索代码的方式快速去除 如上图&#xff0c;我们已经知道 E8 01 00 00 00 ?? ?? ?? ?? ?? C3 是花指令&#xff0c;所以…...

--fatal:Unable to create“.../.git/index.lock“ 的错误

chmod -R 777 开权限...

c++实现树的dfs,bfs

void dfs(Node* head) {if (head nullptr) {return;}std::cout << head->value << ",";dfs(head->left);dfs(head->right); }void bfs(Node* head) {if (head nullptr) { // if head is nullptr, return directlyreturn;}std::queue<Nod...

第138章 触发器关键字 - Order

文章目录第138章 触发器关键字 - Order用法详情默认第138章 触发器关键字 - Order在同一个EVENT和TIME有多个触发器的情况下&#xff0c;指定触发器应该触发的顺序。 用法 要指定此触发器的触发顺序&#xff0c;相对于具有相同EVENT和TIME的其他触发器&#xff0c;请使用以下…...

2006年

Text 1 In spite of “endless talk of difference,” American society is an amazing machine for homogenizing people. There is “the democratizing uniformity of dress and discourse, and the casualness and absence of deference” characteristic of popular cultu…...

DP求解 最大连续子数组和

DP求解 最大连续子数组和 题目描述&#xff1a;输入一个整型数组&#xff0c;数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 1. 暴力求解 思路分析&#xff1a;计算数组中每一个连续子数组的和&#xff0c;找出其中最大值 /*** 暴力求解* param nums…...

再生龙clonezilla启动u盘制作,从vmware启动

制作u盘教程&#xff1a; http://www.360doc.com/content/20/0509/22/59153222_911267277.shtml 制作好u盘后&#xff0c;vmware里把u盘添加成硬盘&#xff0c;从u盘所在的硬盘启动即可。...

Mysql online DDL 线上无锁添加索引

只能通过ALTER TABLE不能create index ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHMINPLACE, LOCKNONE; 参数说明&#xff1a; ALGORITHMINPLACE 更优秀的解决方案&#xff0c;在当前表加索引&#xff0c;步骤&#xff1a; 1.创建索引(二级索引)数据字典 2.加…...

Python个人学习笔记1 - 按行,列求和

1. 给df的每一列求均值 &#xff08;添加一行&#xff09; df.loc[Col_sum] df.apply(lambda x: x.mean())2. 给df的每一行求和 &#xff08;添加一列&#xff09; df[Row_sum] df.apply(lambda x: x.sum())...

string应用

将’a’从字符串s1中全部删除 s1.erase(std::remove(s1.begin(), s1.end(), a), s1.end());string s(b,e); //以区间b,e内的字符作为字符串s的初值 string s4(s3.begin(),s3.begin()5);...

python学习之路(第八天)---re模块正则表达式

python学习之路&#xff08;第八天&#xff09;—re模块正则表达式 python学习之路&#xff08;第八天&#xff09;---re模块正则表达式在线正则匹配正则匹配语法re.compile方法re.match方法re.search方法re.finditer方法转义匹配findall()正则表达式的实例正则表达式&#xff…...

移动端开发

移动端应用 H5 移动端页面App小程序 移动端开发方式 原生开发&#xff08;Native App&#xff09;网页开发&#xff08;Web App&#xff09;混合开发&#xff08;Hybrid App&#xff09;跨平台移动端框架 跨 App 平台&#xff1a;React Native、weex、Flutter跨 App、小程序、…...

bootstrap table自定义新增行

.deleattrbtn,.addtrbtn{width: 60px;color: #fff;font-size: 12px;background-color: #3177E7;border-radius: 2px;border: 0; }#addtrdiv,#back_addtrdiv{margin: 10px 22px;text-align: right; }.table-bordered{table-layout: fixed;font-size: 12px; }.table th, .table...

SqlServer反向生成PowerDesigner物理数据模型

要以管理员的身份运行&#xff01;&#xff01;&#xff01;&#xff01; 我的已经汉化了一部分。选择反向工程里的“Database” 名字随意 点击确定&#xff0c;–>使用数据源&#xff0c;可以不选管理员 点击使用数据源&#xff0c;右边那个&#xff0c;小白色垃圾桶 选…...

毕设系列 -- 基于STM32的人体红外测温枪温度采集系统

文章目录1 简介2 主要器件3 实现效果4 设计原理MLX90614 红外温度传感器5 部分实现代码6 最后1 简介 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天向大家介绍一个学长做的单片机项目 基于STM32的人体红外测温枪温度采集系统 大家可用于 课程设计 或 毕业…...

laravel 8 实现excel 导出

composer 下载 composer require maatwebsite/excel 引入 use Elasticsearch\ClientBuilder; 创建excel文件 php artisan make:Exports FangExports FangExports 里面 return Fang::all(); php后台 //导出房东excelpublic function exports(){return Excel::download(…...

Vue相关:

目录 1,说一下vue最大特点是什么或者说vue核心是什么 2,说一下vue常用基本指令有哪些 3,Vue常用的修饰符...

spring-cloud-kubernetes-feign实战

关于spring-cloud-kubernetes spring-cloud-kubernetes是springcloud官方推出的开源项目&#xff0c;用于将Spring Cloud和Spring Boot应用运行在kubernetes环境&#xff0c;并且提供了通用的接口来调用kubernetes服务&#xff0c;主要提供了应用程序使用k8s本身功能&#xff…...

【Unity】如何将资源包里的Prefabs资源为己所用

步骤一、将所需要的prefab从外部导入的资源拖入Scene中。二、右键该预制体&#xff0c;选择Unpack Prefab Completely取消该预制体及其子物体与资源包中预制体的关联。三、将该预制体拖动到自己的prefabs文件夹目录下&#xff0c;制作成自己项目的预制体。四、在Project面板下&…...

docker学习笔记(一)

概述 Docker是一款针对程序开发人员和系统管理员来开发、部署、运行应用的一款虚拟化平台。Docker 可以让你像使用集装箱一样快速的组合成应用&#xff0c;并且可以像运输标准集装箱一样&#xff0c;尽可能的屏蔽代码层面的差异。Docker 会尽可能的缩短从代码测试到产品部署的时…...

PAT (乙级)1014 福尔摩斯的约会 (20 分)C语言

大侦探福尔摩斯接到一张奇怪的字条&#xff1a;我们约会吧&#xff01; 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了&#xff0c;字条上奇怪的乱码实际上就是约会的时间星期四 14:04&#xff0c;因为前面两字符串中第 1 对相同的大写英…...

【深度学习与图神经网络核心技术实践应用高级研修班-Day4】图像标题生成-image_caption_generation(encoder-decoder)

图像标题生成1. 概述1.1 图像标题生成1.2 CNN1.3 Decoder1.4 与文本翻译模型对比2. 模型原理2.1 图像标题生成模型2.2 学习目标、损失函数3. 代码实现3.1 数据集3.2 数据预处理3.3 构建模型4. 实验结果4.1 损失曲线4.2 测试模型5. 参考文献1. 概述 1.1 图像标题生成 图像标题…...

pydub 安装 win10

在 anaconda 环境下&#xff0c;pip install pydub&#xff0c;检测是否安装成功出现错误&#xff1a; RuntimeWarning: Couldnt find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldnt find ffmpeg or avconv - defaulting to ffmpeg, but m…...

算法刷题计划一----数据结构2-6(leetCode)

415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和。 提示&#xff1a; num1 和num2 的长度都小于 5100 num1 和num2 都只包含数字 0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库&#xff0c; 也不能直接将输入的…...

HTML(菜鸡视角)

heading <h> 标题 </h> 多级标题时&#xff1a;<h1> <h2>......级联 Paragraph <p> 段落内容 </p> Note&#xff01; <!-- 注释内容 --> Element <main> 主要内容 </main> image <img src&quo…...

剑指Offer14-剪绳子12

题目描述–剪绳子1 思路分析 首先要分析出怎么切分是最优方案&#xff0c;显然和一定时&#xff0c;分成相等的数的乘积最大。用简单的数学归纳的思想可以发现&#xff0c;4对应2*2&#xff0c;5对应2x3&#xff0c;6对应3x3&#xff0c;7对应3x2x2&#xff0c;8对应3x3x2&…...

能被5和6同时整除 并且每10个数一行 用python编程 记录

2021-8-23 题列出为100到1000之间能同时被5和6整除的数&#xff0c;并且10个数为一列 接触该题 编写了下面的代码 下面展示一些 内联代码片。 for i in range(100, 1001):if i % 5 0 and i % 6 0:print(i, end" ")结果是&#xff1a; ** 120 150 180 210 240 270…...

解决国内下载vscode慢的方法

VSCO的的下载地址&#xff1a; https://code.visualstudio.com/Download 下载也太慢了 解决办法&#xff1a; 复制链接到新的窗口&#xff0c;将圈起来的地方改为国内镜像地址&#xff1a;vscode.cdn.azure.cn 然后几秒就下载好啦...

RobotFramework-RIDE简单使用

RobotFramework-RIDE简单使用 准备工作 环境准备&#xff08;Python 3.7.5&#xff0c;robotframework 4.1&#xff0c;robotframework-ride1.7.4.2&#xff09; 1&#xff09;pip install robotframework-ride&#xff08;根据本机Python和RobotFramework安装适配版本&#…...

阿里云短信集成dome

依赖&#xff1a; <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.0.6</version></dependency><dependency><groupId>com.aliyun</groupId><artif…...

dbc2000 注册机|dbc2000 注册码注册机下载

点击下载来源&#xff1a;dbc2000 注册机 dbc2000 注册机是同名源程序软件的注册机软件&#xff0c;该源程序软件是一款应用于数据库搭建以及数据写入的数据库架设工具&#xff0c;它拥有强大的数据写入功能&#xff0c;在作为应用程序使用时&#xff0c;它不仅可以充当数据属性…...

秋招面经第八弹:网易二面-数据开发工程师

秋招第八弹&#xff1a;网易二面-数据开发工程师 写在最前&#xff1a;秋招以来一直在冲&#xff0c;因为事情比较多&#xff0c;对于笔试面试一直没有复盘&#xff0c;现在靠仅存的记忆把面试的一些问题记录下来&#xff0c;尽可能记录出能回忆到的问题&#xff0c;但可能记的…...

安卓课程格子APP

https://download.csdn.net/download/weixin_57836618/73810452 功能演示&#xff1a; 查看所有课程 点击主页面空白处即可添加课程 添加课程之后查看课程 查看双周课程 查看单周课程 6.查看课程详情...

强化学习——格子世界

强化学习——格子世界 项目源码地址&#xff1a;https://gitee.com/infiniteStars/machine-learning-experiment 1. 实验内容 2. 实验代码 import numpy as np import matplotlib.pyplot as plt from matplotlib.table import Table from xml.dom.minidom import Document #手…...

华为机试 - 跳格子游戏

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 地上共有N个格子&#xff0c;你需要跳完地上所有的格子&#xff0c;但是格子间是有强依赖关系的&#xff0c;跳完前一个格子后&#xff0c;后续的格子才会被开启&#xff0c;格子间的依赖关系由多组st…...

php 爬课程表信息,Ruby爬取教务系统生成课程表

我为什么要虐自己最近觉得课程格子广告越来越多&#xff0c;乱七八糟的东西越来越多&#xff0c;完全失去了一开始的存在价值&#xff0c;并且没有电脑端app&#xff0c;想查看课程必须拿出手机&#xff0c;而我使用电脑频率要比手机高&#xff0c;所以才有了折腾的动力。于是我…...

android 课程表 ui,UICollectionViewLayout实现课程表布局

因为项目中有课程表的相关模块&#xff0c;第一时间想到用UICollectionView。然而后期的需求越来越复杂&#xff0c;每个格子需要展示的内容越来越多&#xff0c;所以不得不寻找合适的解决方案。最后发现自定义UICollectionViewLayout可以实现我的需求。先放效果图&#xff1a;…...

Android自定义View课程表,Android 自定义View课程表表格

自己闲下来时间写的一个课表控件使用的自定义LinearLayout 里面View都是用代码实现的 最终效果如下图 写的可能有问题希望多多指点创建一个自定义LinearLayout 控件用来装载课程的信息和课程的周数 和节数大概的布局三这样的根据上面的看来觉得总体布局我分了两个 上面的星期是…...

java课程设计设计_java课程设计

1. 团队课程设计博客链接https://www.cnblogs.com/choco1ate/p/12172223.html2.本组课题及本人任务本组课题&#xff1a;泡泡堂(炸弹人)游戏本人任务&#xff1a;Box类(游戏地图中的每个方格)Bomb类(游戏过程中的)游戏玩家输赢信息的文件储存3.需求分析Box类&#xff1a;该类为…...

《课程格子》的一个笔试题目

题目如下&#xff0c;感觉很适合喜欢琢磨的程序员&#xff0c;也是考验你编码风格的时候。 Lets make a tower defense game&#xff08;塔防游戏):1. You have 1 tower, with H health and D dps(damage per second).2. There are n attackers, each with h_i health and d_i …...

Android仿照超级课程表 or 课程格子 一键提取课表功能(方正系统)

参考文章http://blog.csdn.net/sbsujjbcy ,本文仿照‘ 安卓弟 提供的android 项目实战——打造超级课程表一键提取课表功能文章&#xff0c;对他的代码进行了修改和补充&#xff0c;为什么要修改呢&#xff1f;原因是安卓弟的那个源码版本过于老旧&#xff0c;很多方法已经过…...

Pycharm中工程项目的多个python环境的管理使用方法的一点点理解

最近开始入坑Python, 想学习深度学习和爬虫&#xff0c;所以我们可以安装 tensorflow和scrapy 这 两个工具包&#xff0c;我知道的方法有两种&#xff1a; 一 通过pip 安装&#xff0c; 在控制台中用如下语句 pip install tensorflow pip install scrapy 安装tensorflow一般…...

软件工程(一)

初识软件工程 1.软件是无处不在的 按用途分为系统软件和应用软件以及游戏软件 我们用win7&#xff0c;win10就是系统软件&#xff0c;打王者荣耀就是游戏软件&#xff0c;使用wps就是应用软件&#xff0c;甚至我们家里的电冰箱&#xff0c;它身上也安装着软件&#xff01;&a…...

硬件工程师面试经历2015---面试篇

如果说一份好的简历是求职的敲门砖&#xff0c;笔试是求职的通行证&#xff0c;那么面试的好坏就直接决定着你是否能拿得到工作这张门票。 找工作到现在&#xff0c;我拿到的offer一共有6个&#xff0c;按时间顺序是华为&#xff0c;36所&#xff0c;阿尔卡特朗讯&#xff0c;国…...

交通信息工程 实验四:交通仿真实验(二)

前言 The best is yet to come 最好的尚未到来 海轰 程序猿 在读学生 分享一些自己的编程小作品、学习笔记 公众号&#xff1a;海轰Pro【不定期推送学习资源、项目源码】 交通仿真实验&#xff08;二&#xff09; 一、实验名称&#xff1a; Synchro交通仿真 二、实验目的与要求…...

IDEA使用教程之创建一个工程(一)

前言 一学期的软件构造课即将结束了&#xff0c;这学期课程中第一次接触到了java语言&#xff0c;也写了不少代码&#xff08;在下估计一万行是有了&#xff09;。写代码自然少不了使用IDE&#xff0c;于是在被java蹂躏了整整一个学期之后&#xff0c;为了以后的各位同行在使用…...

CMake工程从入门到进阶完整版,可以完成简单的工程创建(完结)

一、Cmake介绍CMake是一个跨平台的编译工具,使用CMake能够输出各种各样的makefile或者project文件。先介绍makefile&#xff1a;以一个linux下的例子来说&#xff0c;我要编译如图所示的工程怎么办&#xff1f;如果不用make命令&#xff0c;则应当输入的命令为&#xff1a;gcc命…...

2022哈尔滨工程大学软件工程上岸经验贴

** 2022哈尔滨工程大学软件工程上岸经验贴** 先说一下本人情况&#xff0c;我2022年报考哈尔滨工程大学软件工程专业&#xff0c;政治69&#xff0c;英语68&#xff0c;数一106&#xff0c;专业课139&#xff0c;总分382&#xff0c;初试第九&#xff0c;复试后综合排名第四&a…...

网络工程师成长日记140-机遇都是碰出来的

这是我的第140篇原创文章&#xff0c;记录网络工程师行业的点点滴滴&#xff0c;结交IT行业有缘之人 小赵虽然是名女生&#xff0c;但是我很看好她她有很多优点&#xff0c;自己看不到她学习能力强&#xff0c;别人学习10天&#xff0c;她2个小时搞定别人觉得困难&#xff0c;需…...

项目之软件工程

软件工程的本质 一级标题 控制 质量 二级标题 成本 扩展 高内聚低耦合 效率 控制&#xff1a; 成本&#xff1a;企业要求的是以最快的速度完成可正常运行的软件 需要多少人力做 多长时间能做好 -----控制好成本利润更多 扩展&#xff1a; 用户要求修改原先的某个…...