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面向对象练习-士兵开枪问题相关推荐

  1. python面向对象-老王开枪

    1:大体框架 def main(): #1.创建老王对象 #2.创建一个枪对象 #3.创建一个弹夹对象 #4.创建一些子弹 #5.创建一个敌人 #6.老王把子弹装入弹夹 #7.老王把弹夹装入枪体 #8 ...

  2. 【python初学】class类士兵开枪案例

    #引入time中的sleep函数,丰富内容 from time import sleep#定义枪类 class Gun:def __init__(self,gun_type,bullets):#定义枪 ...

  3. 十四、理解nn.module方法——学习python面向对象编程(一)

    起因 在(十二)中说到pytorch中创建神经网络的两种方法:一个是Sequential类(这也是一种继承父类属性和方法并可对其方法重构的子类),另一个是自己编写代码,继承nn.module类,对其内 ...

  4. python面向对象的优点_Python面向对象编程——总结面向对象的优点

    Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...

  5. 这可能是Python面向对象编程的最佳实践

    作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了 ...

  6. 第八课.Python面向对象(二)

    类的继承和多态 继承和多态与函数有共同的目的,都是为了减少代码的冗余,提高复用的效率: 根据"Python面向对象(一)"的笔记,我现在定义一个Cinema类: #父类 class ...

  7. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  8. 《Python面向对象编程指南》——1.2 基类中的__init__()方法

    本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...

  9. Python 面向对象 基础

    编程范式概述: 面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实 ...

最新文章

  1. 袋鼠过河(动态规划)
  2. xgboost进行分类具体实现
  3. ASP.NET Web Pages – 页面布局简介
  4. pythonista3使用教程-pythonista3中文教程
  5. python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!
  6. hdu 4533(树状数组区间更新+单点查询)
  7. 创新式开发探索(一) —— 开篇
  8. python元编程之使用动态属性实现定制类--特殊方法__setattr__,__getattribute__篇
  9. gwt-2.8.2下载_GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
  10. android activity四种加载模式
  11. 思科简单教程CCNA
  12. 基于SSM实现图书借阅管理系统-毕业设计
  13. CCS软件的C语言取模注意点
  14. 阿里巴巴宣布5.4亿战略投资中国万网==互联网电子商务绑定互联网基础服务为手机电子商务开拓铺路...
  15. 汇编语言之div命令
  16. Macbook 删除被锁定的应用
  17. 物体检测及分类方法总结(提供了很多论文和代码链接)
  18. chrome图片下载插件
  19. 全面解析Mybatis中参数处理
  20. 数学基础知识之Sin、cos画圆

热门文章

  1. oracle unpivot 用法,PIVOT/UNPIVOT的用法
  2. 有个学计算机的男朋友出轨,“男友发了一条朋友圈,我才知道他出轨了”
  3. ssm+jsp计算机毕业设计影迷互动平台1l22q(程序+lw+源码+远程部署)
  4. vs新建项目时出现“异常来自HRESULT: 问题解决方法
  5. NeurIPS2021-DualNet: Continual Learning, Fast and Slow
  6. linux 安装gitkraken
  7. python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)
  8. GoJS官方教程自学笔记
  9. Java程序员面试必备之深入理解自旋锁
  10. UML的5种类图,10种模型图