Python中类的封装:一个对象的属性可以是另外一个类型创建的对象
需求如下:
士兵 许三多 有一把 AK47
士兵 可以 开火
枪 能够 发射 子弹
枪 装填 装填子弹 —— 增加子弹数量
分析如下:
士兵 许三多 需要创建一个类:士兵类(Soldier),实例化出许三多这个对象,并且士兵的属性有name和gun
士兵 可以 开火 说明士兵类有一个方法:fire(开火)
有一把 AK47 说明需要一个枪类,实例化出一个枪对象
AK47 增加子弹数量 说明枪类中有两个属性:model(枪类)和buttet_count(子弹数);
枪 能够 发射 子弹 枪 装填 装填子弹 —— 增加子弹数量 说明Gun类有两个方法:add_buttet(装填子弹)和shoot(发射)。
代码设计
class Gun:
def __init__(self,model):
#枪的类型
self.model = model
#枪的子弹数量
self.bullet_count = 0
def add_bullet(self,count):
self.bullet_count +=count
def shoot(self):
#判断子弹数量
if self.bullet_count <= 0
print("[%s]没有子弹了..."%self.model)
return
#子弹数量减1
self.bullet_count -=1
#打印提示信息
print("[%s]突。。。[%d]" %(self.model,self.bullet_count))
#对象实例化
AK = Gun("AK47")
#调用方法添加子弹
AK.add_bullet(50)
#射击
AK.shoot()
#输出
#[AK47]突。。。[49]
接下来定义一个士兵类:
代码如下:
class Soldier:
def __init__(self,name):
self.name = name
self.gun = None
def Fire():
#判断士兵是否有枪
if self.gun = None
print("我没有枪")
return
#2高喊口号
print("%s冲啊"%self.name)
#3让枪装填子弹
self.gun.addbullet(50)
#4让枪射击
self.gun.shoot()
#实例化对象
xusanduo = Soldier("许三多")
xusanduo.gun = AK #此处将AK这个对象赋值给xusanduo 的gun属性
xusanduo.fire()
文章参考链接
如有侵权,敬请联系删除