python面向对象封装--士兵突击
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python面向对象封装--士兵突击,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1934字,纯文字阅读大概需要3分钟。
内容图文
![python面向对象封装--士兵突击](/upload/InfoBanner/zyjiaocheng/621/89d020cf1c2a4bf0b3fa2d1950a3fa90.jpg)
士兵突击
重点理解:一个对象的属性,可以是另一个类创建的对象。
项目需求:
1、士兵许三多有一把AK47
2、士兵可以开火
3、枪能够发射子弹
4、枪能够装填子弹
项目分析:
根据项目需求,可以提炼出两个类,枪和人。
枪类的属性有:名字、子弹数量
枪类的方法有:装填子弹、射出子弹
人类的属性有:名字、枪
人类的方法有:开火
因为许三多需要使用AK47,所以我们应该首先开发枪类。
项目开发:
开发枪类:
在开发枪对象的shoot
方法时,要先判断枪是否还有子弹,如果没有,需要直接使用return
关键字停止执行下面的代码。
class Gun:
def __init__(self, name):
self.name = name
self.bullets = 0
def add_bullet(self, count):
self.bullets += count
def shoot(self):
if self.bullets <=0:
print("%s没有子弹了" % self.name)
return
self.bullets -= 1
print("突突突,%s还有%d发子弹" % (self.name, self.bullets))
ak47 = Gun("AK47")
ak47.add_bullet(5)
ak47.shoot()
开发士兵类:
假设每个新兵都没有枪。因为新兵没有枪,所以需要通过形参传递的属性只有name一个。在使用士兵类创建好许三多对象之后,可以使用赋值语句将AK47赋值给许三多的枪属性。
在定义属性的时候,如果不知道设置什么初始值,可以设置为None
,这样就避免了在外部给对象设置属性。
None关键字表示什么都没有,表示一个空对象,没有方法和属性,是一个特殊的常量,可以将None赋值给任何一个变量。
在开发士兵类的fire
方法的时候:
1、判断是否有枪
2、喊一声口号
3、装填子弹
4、射击
class Solider:
def __init__(self, name):
self.name = name
self.gun = None
def fire(self):
# 判断士兵是否有枪
if self.gun is None:
print("%s还没有枪"% self.name)
return
# 喊一声口号
print("冲啊。。。。")
# 装填子弹
self.gun.add_bullet(5)
# 开火
self.gun.shoot()
xusanduo = Solider("许三多")
xusanduo.gun = ak47
xusanduo.fire()
这节课的重点是,一个对象的属性,可以是另外一个类创建的对象,所以在士兵开枪的时候,就可以调用封装在枪类里面的装填子弹和发射子弹的方法。
在判断士兵有没有枪的时候,用了身份运算符is
运算符 | 实例 |
---|---|
is | 类似id(x) =id(y) |
is not | 类似id(a) != id(b) |
is
用于判断两个变量引用对象是否为同一个
==
用于判断引用变量的值是否相等
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a
False
>>> b == a
True
内容总结
以上是互联网集市为您收集整理的python面向对象封装--士兵突击全部内容,希望文章能够帮你解决python面向对象封装--士兵突击所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。