Python面向对象练习-士兵开枪问题
1)需求:
1.士兵瑞恩有一把AK47
2.士兵可以开火(士兵开火扣动的是扳机)
3.枪能够发射子弹–把子弹发射出去
4.枪能够装填子弹–增加子弹的数量
2)分析:
由于士兵瑞恩有一把AK47,士兵可以开火。故应该创建两个类:一个是士兵类,一个是枪类
枪类(Gun):
(1)属性:型号(model),弹夹中子弹的数目(bullet_count)
(2)方法:射击子弹(shoot),添加子弹(add_bullet)
士兵类(soldier):
(1)属性:姓名(name),枪名(Gun)
(2)方法:开火(fire)
3)代码的实现:
class Gun:def __init__(self,model,bullet_count):self.model = modelself.bullet_count = bullet_countdef __str__(self):return "%s,它有%d颗子弹" %(self.model,self.bullet_count)def shoot(self):if self.bullet_count == 0:return Falseelse:self.bullet_count -= 1print("正在射击...已经射中目标!")return Truedef add_bullet(self,count):self.bullet_count += countprint("已经填充了%d颗子弹" % count)return True
class Soldier:def __init__(self,name):self.name = nameself.gun = Nonedef __str__(self):return "%s有一把%s" % (self.name,self.gun)def fire(self):if self.gun == None:return Falseelse:self.gun.add_bullet(10)self.gun.shoot()return TrueB = Gun("ak47",30) #将枪实例化
A = Soldier("恩德")
A.gun = B #将实例化的枪给士兵
A.fire()
print(A)
4)运行结果:
Python面向对象练习-士兵开枪问题相关推荐
- python面向对象-老王开枪
1:大体框架 def main(): #1.创建老王对象 #2.创建一个枪对象 #3.创建一个弹夹对象 #4.创建一些子弹 #5.创建一个敌人 #6.老王把子弹装入弹夹 #7.老王把弹夹装入枪体 #8 ...
- 【python初学】class类士兵开枪案例
#引入time中的sleep函数,丰富内容 from time import sleep#定义枪类 class Gun:def __init__(self,gun_type,bullets):#定义枪 ...
- 十四、理解nn.module方法——学习python面向对象编程(一)
起因 在(十二)中说到pytorch中创建神经网络的两种方法:一个是Sequential类(这也是一种继承父类属性和方法并可对其方法重构的子类),另一个是自己编写代码,继承nn.module类,对其内 ...
- python面向对象的优点_Python面向对象编程——总结面向对象的优点
Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...
- 这可能是Python面向对象编程的最佳实践
作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了 ...
- 第八课.Python面向对象(二)
类的继承和多态 继承和多态与函数有共同的目的,都是为了减少代码的冗余,提高复用的效率: 根据"Python面向对象(一)"的笔记,我现在定义一个Cinema类: #父类 class ...
- Python面向对象编程:类继承和其衍生术语
Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...
- 《Python面向对象编程指南》——1.2 基类中的__init__()方法
本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...
- Python 面向对象 基础
编程范式概述: 面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实 ...
最新文章
- 袋鼠过河(动态规划)
- xgboost进行分类具体实现
- ASP.NET Web Pages – 页面布局简介
- pythonista3使用教程-pythonista3中文教程
- python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!
- hdu 4533(树状数组区间更新+单点查询)
- 创新式开发探索(一) —— 开篇
- python元编程之使用动态属性实现定制类--特殊方法__setattr__,__getattribute__篇
- gwt-2.8.2下载_GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
- android activity四种加载模式
- 思科简单教程CCNA
- 基于SSM实现图书借阅管理系统-毕业设计
- CCS软件的C语言取模注意点
- 阿里巴巴宣布5.4亿战略投资中国万网==互联网电子商务绑定互联网基础服务为手机电子商务开拓铺路...
- 汇编语言之div命令
- Macbook 删除被锁定的应用
- 物体检测及分类方法总结(提供了很多论文和代码链接)
- chrome图片下载插件
- 全面解析Mybatis中参数处理
- 数学基础知识之Sin、cos画圆
热门文章
- oracle unpivot 用法,PIVOT/UNPIVOT的用法
- 有个学计算机的男朋友出轨,“男友发了一条朋友圈,我才知道他出轨了”
- ssm+jsp计算机毕业设计影迷互动平台1l22q(程序+lw+源码+远程部署)
- vs新建项目时出现“异常来自HRESULT: 问题解决方法
- NeurIPS2021-DualNet: Continual Learning, Fast and Slow
- linux 安装gitkraken
- python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)
- GoJS官方教程自学笔记
- Java程序员面试必备之深入理解自旋锁
- UML的5种类图,10种模型图