1. 我们学了类的这些东西,用这些类我们来操作一个关于类的实例。

2. 题目:人开枪射击子弹,然后具有装弹动作,然后再开枪。

第一步:设计类:


类名:Person
属性:gun
行为:fire,fillBullet


类名:Gun
属性:bulletBox
行为:shoot

弹夹
类名:BulletBox
属性:bulletCount
行为:

  分析:我们采取倒序的方式来设计这段面向对象的程序。人——枪——弹夹——发射,我们可以看出发射是最后一个动作。

第二步:创建类

  我们用图示的方式来演示这么一段代码的过程。

from person import Person
from gun import Gun
from bulletbox import BulletBox # 弹夹
bulletBox = BulletBox() # 枪
gun = Gun(bulletBox) # 人
per = Person(gun) per.fire()
per.fire()
per.fire()
per.fire()
per.fire()
per.fire()
per.fire() per.fillBullet()
per.fire()
per.fire()
per.fire() 剩余子弹: 4发
剩余子弹: 3发
剩余子弹: 2发
剩余子弹: 1发
剩余子弹: 0发
没有子弹了
没有子弹了
装入子弹2发
剩余子弹: 1发
剩余子弹: 0发
没有子弹了

Python笔记_第三篇_面向对象_5.一个关于类的实例(人开枪射击子弹)的更多相关文章

  1. Python笔记_第三篇_面向对象_4.单下划线和双下划线

    说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和se ...

  2. Python笔记_第三篇_面向对象_2.第一个Python类

    1. 设计一个类: 设计一个类主要从三个方面进行考虑: 第一:类名:类名要见名知意.首字母大写. 第二:属性. 第三:方法. 备注:在Python中有些东西并不是绝对化的事情,有些根据Python社区 ...

  3. Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明)

    1. 构造函数: 为什么要有构造函数? 打一个比方:类的创建就是好比你创建了好了一种格式的房间,你租给上一个住户的后,里面会对方很多“垃圾”和不规则的物品摆放.构造函数就是下一个住户再使用的时候进行物 ...

  4. Python笔记_第三篇_面向对象_9.Python中的"get"和"set"方法(@property和@.setter)

    1. 限制访问的问题: 如果学过C# 语言的我们可以知道C# 语言有get和set方法.我们之前想要获取父类中的私有变量,只能通过写一个set和get的函数进行访问或者通过类生成的新关键字来访问私有属 ...

  5. Python笔记_第三篇_面向对象_1.面向对象的基本概念和作用域

    1. 软件编程的实质: 软件编程就是将我们的思维转变成计算机能够识别语言的一个过程.重要的是思想,代码技术反而次要.因此思想也是最难的,突破固定的思想是关键 2. 什么是面向过程: * 自上而下顺序执 ...

  6. Python笔记_第三篇_面向对象_3.重载(overloading)和重写(overriding)

    1. 重载: overloading:就是将函数重新定义一遍. 1.1 __str__( )和__repr__( )的重载: 格式: __str__( ):在调用print打印对象时自动调用,是给用户 ...

  7. Python笔记_第三篇_面向对象_8.对象属性和类属性及其动态添加属性和方法

    1. 对象属性和类属性. 我们之前接触到,在类中,我们一般都是通过构造函数的方式去写一些类的相关属性.在第一次介绍类的时候我们把一些属性写到构造函数外面并没有用到构造函数,其实当时在写的时候,就是在给 ...

  8. Python笔记_第三篇_面向对象_7.多态

    1. 多态的概念 多态:一种事物的多种形态.其表现形式就是连续的继承关系. 还以人喂食动物的例子.最终目标是人可以喂食任何一种动物.如果人要喂食100多种动物,难道要写100中方法吗?多态就是把属性和 ...

  9. Python笔记_第三篇_面向对象_6.继承(单继承和多继承)

    1. 概念解释: 继承:有两个类:A类和B类.那么A类就拥有了B类中的属性和方法. * 例如:Object:是所有类的父亲,还可以成为基类或者超类(super()) * 继承者为子类,被继承者成为父类 ...

随机推荐

  1. P 1023 组个最小数

    转跳点:

  2. 使用node.js安装asar和反编译app.asar

    背景:app.asar文件是Electron加密打包时的中间产物,electron.exe调用resources文件夹下的app.asar从而实现不用解压缩而直接读取文件内容的高效. 一.需要先安装n ...

  3. hostapd 热点设置

    一.  需要安装的服务:hostapd dhcp(isc-dhcp-server) dns(dnsmasq或者bind9或者都不装设成8.8.8.8 ) 二.建hostapd.conf文件   ,su ...

  4. 利用京东云Serverless服务快速构建5G时代的IoT应用

    10月31日,在2019年中国国际信息通信展览会上,工信部宣布:5G商用正式启动.5G商用时代来了! 5G的商用,使得数据传输速度.响应速度.连接数据.数据传输量.传输可靠性等方面都有了显著的提升,这 ...

  5. 体验京东云 Serverless+AI 人脸属性识别

    云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义: Server ...

  6. Nginx之epoll和select poll

    epoll和 select poll 都是做I/O多路复用的. 区别在于: epoll较灵活,如果有一百万个链接状态同时保持,但是在某个时刻,只有几百个链接是活跃的.epoll的处理是通过epoll_ ...

  7. POJ - 3657 Haybale Guessing(二分+并查集)

    题意:有N个大小各不相同的点,给定Q个询问,格式为q1,q2,A,表示区间q1~q2的最小值是A,问第一个与之前询问结果出现冲突的询问. 分析: 1.二分询问的标号mid,查询1~mid是否出现询问冲 ...

  8. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  9. 201703-2 学生排队 Java

    思路: 将需要移动的学生remove后再add 题目中说向前向后移动不会超过人数,也就是不会出现隔着的情况.所以不会越界. import java.util.ArrayList; import jav ...

  10. libcurl在windows下的使用

    curl在linux下很好用,但到了windows下写程序却没办法使用了,这时候可以使用libcurl库 libcurl库的编译网上很多,我就不一一赘述了,curl的官方网站:https://curl ...